Tag: 静态

C静态初始化元素不是常量错误

这是我在C语言中的源代码我想用静态,外侧函数定义基本数据 #include typedef struct { char * URI; char * file; } redirect_t; typedef struct { char * URI; char * file; long long content_length; } content_t; typedef struct { content_t contents[10]; redirect_t redirects[10]; } host_t; typedef struct { unsigned max_requests; host_t hosts[10]; } addr_t; static addr_t addr_list[] = { (addr_t) { 24, { (host_t) […]

static const char * const和static const char 有什么区别?

可能重复: char a [] =“string”有什么区别; 和char * p =“string”; 数组版本是否会分配数组内存,因此一个100字节的字符串将在常量部分使用100个字节,在静态数组上使用100个字符,或者它将仅使用100个字节? 和指针版本一样,除了字符串的100个字节之外,还会为指针分配字大小,还是将指针优化为常量段地址?

在Windows上为glut 3.7构建静态库

我一直在尝试将glut编译为静态库,而不必在运行时链接glut32.dll。 我下载了过剩的windows源代码但是当我尝试编译时(默认),我不断得到: Making in glut subdirectory… link /INCREMENTAL:NO /NOLOGO -entry:_DllMainCRTStartup@12 -dll -out:glut32.dll -def:glut.def glut_8x13.obj glut_9x15.obj glut_bitmap.obj glut_bwidth.obj glut_cindex.obj glut_cmap.obj glut_cu rsor.obj glut_dials.obj glut_dstr.obj glut_event.obj glut_ext.obj glut_fullscrn.obj glut_gamemode.obj glut_get.obj glut_hel10.obj glut_hel12.obj glut_hel18.obj glut_init.obj glut_input.obj glut_joy.ob j glut_key.obj glut_keyctrl.obj glut_keyup.obj glut_mesa.obj glut_modifier.obj glut_mroman.obj glut_overlay.obj glut_roman.obj glut_shapes.obj glut_space.obj glut_stroke.obj glut_swap.obj glut_swidth. obj glut_tablet.obj glut_teapot.obj glut_tr10.obj glut_tr24.obj glut_util.obj glut_vidresize.obj […]

两个相同名称的静态变量(两个不同的文件)和其他任何文件中的外部变量

在一个文件中将变量声明为静态并在另一个文件中执行extern声明 – 我认为这会在链接时出错,因为在任何对象中都不会看到extern变量,因为在其他文件中声明的变量是静态的。 但不知何故,链接器(瑞萨)没有显示任何错误并创建了可执行文件。 如果上面的用例是正确的,如果2个变量在2个不同的文件中声明为静态而另一个在另一个带extern声明的文件中会发生什么? 在这种情况下,将在2个不同的对象中创建2个不同的存储器,但是哪个变量将被链接用于其他变量,在另一个文件中被声明为extern(因为两个变量名都相同)? 在file1.c static int test_var; fn1() { test_var = 1; } file2.c中 static int test_var; fn2() { test_var = 2; } file3.c中 extern int test_var; fn3() { int x; x = test_var; }

从C函数返回指针是好/坏设计?

我想知道来自C函数的返回指针是好/坏设计? 如果这是一个不好的做法,在下面的例子中,这将是一个好习惯: 问题是继续部分: c函数返回静态变量 在data.h文件中: #include #include typedef struct { int age; int number; } person; person * getPersonInfo(); 在data.c #include “data.h” static struct person* person_p = NULL; person * getPersonInfo() { person_p = (struct person*)malloc(10 * sizeof(struct person)); return person_p; } 在main.c #include “data.h” int main() { person* pointer = getPersonInfo(); return 0; } […]

在哪里分配静态缓冲区?

假设我有一个文件test.c,其中包含: char buffer1[1024]; int somefunction() { char buffer2[1024]; // do stuff } 现在我知道buffer2是在属于某些函数调用的帧上的堆栈上分配的,但是在哪里分配了buffer1?

如何将库静态链接到另一个静态库?

我有2个不同版本的MinGW构建环境:一个配置为Qt,一个配置为不。 但是,它们都有Qt的存根静态库(最终实际链接到dll)。 问题是我想在Qt MinGW中构建一个静态库,然后将它包含在非Qt MinGW中。 我尝试时收到以下链接错误: moc_browser.cpp :(。eh_frame + 0x11):未定义引用`___gxx_personality_v0′ browser.cpp :(。text + 0x213):未定义引用`__Unwind_Resume’ 我发现Qt MinGW动态链接到标准库,我需要包含-static-libgcc选项。 但是,我不知道在哪里使用它,因为我没有构建可执行文件,而是一个静态库。

每次调用父函数时,C中的静态变量是否重新分配?

假设我在C中的函数内声明了一个静态变量。 如果我多次调用该函数,那么每次调用函数时,是否会在内存中重新分配静态变量? 如果确实重新分配,为什么始终保持最后一个值? 例: void add() { static int x = 1; x++; printf(“%d\n”,x); } int main() { add(); // return 2 add(); // return 3 add(); // return 4 }

C找到静态数组大小

static char* theFruit[] = { “lemon”, “orange”, “apple”, “banana” }; 通过查看这个数组,我知道大小是4。 如何以编程方式在C中查找此数组的大小? 我不希望大小以字节为单位。

你知道一个用于计算Unix时间和日期的C宏吗?

我想知道是否有人知道/有一个C宏来计算硬编码日期和时间的静态Unix时间,如: time_t t = UNIX_TIMESTAMP(2012, 5, 10, 9, 26, 13); 我正在调查,因为我想要一个数字静态时间戳。 这将在整个软件中完成数百次,每次都有不同的日期,我想确保它很快,因为它每秒运行数百次。 转换多次会明确减慢速度的日期(即调用mktime()比编译静态数字要慢,对吧?) [更新以试图使这一段更清晰,2012年11月23日] 更新 我想澄清有关正在使用的过程的更多信息的问题。 当我的服务器收到请求时,对于每个请求,它都会启动一个新进程。 使用新插件不断更新该过程,并且此类更新通常需要数据库更新。 那些必须只运行一次。 要知道是否需要更新,我想使用Unix日期(这比使用计数器更好,因为计数器更有可能偶尔会破坏一次。) 因此,插件将接收更新信号并调用其on_update()函数。 在那里我想做这样的事情: void some_plugin::on_update(time_t last_update) { if(last_update < UNIX_TIMESTAMP(2010, 3, 22, 20, 9, 26)) { …run update… } if(last_update < UNIX_TIMESTAMP(2012, 5, 10, 9, 26, 13)) { …run update… } // as many test as […]