Tag: 静态

如何定义线程局部本地静态变量?

如何定义不在不同线程之间共享的本地静态变量(在函数调用之间保持其值)? 我正在寻找C和C ++的答案

C ++中各个元素的静态数组初始化

以下代码适用于GCC的C编译器,但不适用于C ++编译器。 是否有“快捷方式”在C ++中实现相同的结果? int array[10] = { [1] = 1, [2] = 2, [9] = 9 }; 编辑:嗯,我发现了这一点,澄清了一切。 http://eli.thegreenplace.net/2011/02/15/array-initialization-with-enum-indices-in-c-but-not-c/

如何重置函数内的静态变量

有没有办法重置函数中声明为static的变量? 目标是确保不使用来自不相关调用的延迟值调用该函数。 例如,我有一个矩arrays的函数opearting。 int foo(matrix *A, int colnum, int rownum){ static int whichColumn; static int *v; //vector of length A->nrows if (column != whichColumn){ memset(v,0,size); whichColumn = which; } //do other things } 该函数被调用n次,每列一次。 这是“重新设置”静态变量的正确方法吗? 是否有其他一般的万无一失的重置静态变量的方法? 例如,我想确保如果使用可能具有不同维度的新矩阵进行调用,则向量v被resize并归零等。似乎最简单的方法是使用NULL指针调用该函数: int foo(matrix *A, int colnum, int rownum){ static int whichColumn; static int *v; //vector of length A->nrows if […]

如何将VSTS .lib转换为MinGW .a?

我有一个用Visual Studio编译的静态库,我想从MinGW链接到它。 我尝试更改后缀但是我得到了一堆警告: Warning: .drectve /DEFAULTLIB:”uuid.lib” /DEFAULTLIB:”uuid.lib” /DEFAULTLIB:”MSVCRT” /DEFAULTLIB:”OLDNAMES” ‘ unrecognized 。 还有一些错误,包括: ./libetpan.a(Release_ssl/mailimap.obj):(.text[_mailimap_noop]+0x7): undefined reference to 。 ./libetpan.a(Release_ssl/mailimap.obj):(.text[_mailimap_noop]+0x7): undefined reference to ___ security_cookie’`。 任何帮助是极大的赞赏。

使用函数调用初始化静态变量会产生编译错误?

#include int foo(){ return 1; } int main(void) { static int q = foo(); return 0; } 这是一个相同的链接。 这是一个C代码而不是C ++。 它在C ++中编译并运行良好,但不是C. 此代码出现编译错误。 有人可以解释为什么会出错? 静态成员只能用常量值初始化吗? 在C ++中,我们需要在声明静态成员后对其进行DEFINE,为什么在C中不需要它? 我找不到任何具有类似查询或良好答案的线程。

array 括号内的static关键字

我最近遇到了static关键字的新用法。 static意味着什么? void fun(int some_array[static 7]); 编辑 :有人可以举例说明这有用吗?

是否可以在单个C文件中声明具有相同名称的多个静态变量?

是否可以在具有不同范围的单个C文件中声明多个具有相同名称的静态变量? 我写了一个简单的程序来检查这个,并在gcc中编译并运行良好。 码: static int sVar = 44; void myPrint2() { printf(“sVar = %d\n”, sVar++); } void myPrint() { static int sVar =88; printf(“sVar = %d\n”, sVar++); } int main(void) { static int sVar = 55; int i = 0; for (i = 0; i < 5; i++) myPrint(); printf("sVar = %d\n", sVar); myPrint2(); return(0); […]

如何在系统识别的不同function中使用相同名称的静态变量?

AFAIK,我们可以在不同的函数中有两个同名的静态变量吗? 这些如何由编译器和符号表管理? 他们的身份如何单独管理?

为什么“static”关键字在C和C ++中有这么多含义?

众所周知,关键字static在C语言中有多重含义 .C99增加了合法写作的可能性 void foo (int arr[static 50]) { // … } 这增加了混乱,而C ++具有静态成员变量和函数。 如果所有的用途都可以以某种方式连接,这不会那么麻烦,但我发现很难找到某些情况的链接。 特别是为什么static关键字应该用于修改可见性(链接),或者它究竟与数组的最小元素数量有关。 那么滥用static关键字是否存在历史原因,或者是否存在连接其所有用途的秘密链接?

C中的内部静态变量,你会使用它们吗?

在C中,您可以拥有可在文件中的每个位置查看的外部静态变量,而内部静态变量仅在函数中可见但是持久 例如: #include void foo_bar( void ) { static counter = 0; printf(“counter is %d\n”, counter); counter++; } int main( void ) { foo_bar(); foo_bar(); foo_bar(); return 0; } 输出将是 counter is 0 counter is 1 counter is 2 我的问题是你为什么要使用内部静态变量? 如果你不希望你的静态变量在文件的其余部分可见,那么该函数真的不应该在它自己的文件中吗?