Tag: 静态变量

我怎么能从另一个文件访问静态变量?

我怎么能从另一个文件访问静态变量? 静态变量不具有文件范围吗? bash-3.2$ ls ac bc bash-3.2$ cat ac #include static int s = 100; int fn() { /* some code */ } bash-3.2$ cat bc #include #include “ac” extern int s; int main() { printf(“s = %d \n”,s); return 0; } bash-3.2$ gcc bc bash-3.2$ a.exe s = 100

将指针传递给C中的静态全局变量

将指向静态结构的指针传递给函数是否安全? 我有这样的事情: mymodule.c: static MYEVENT_STRUC_T event; uint_32 _myRtos_set_event(MYEVENT_STRUCT_T* event_ptr, uint_32 mask); uint_32 mymodule_set_event(uint_32 event_mask){ /* Kernel function */ /* Defined outside mymodule.c,*/ /* Is it safe to call it with &event? */ return _myRtos_set_event(&event, event_mask); }

如何从C中的另一个文件访问静态变量?

可能重复: 静态变量 如何从C中的另一个文件访问静态变量? 由于静态变量具有文件范围,我认为我们无法在文件外访问它。 但我仍然觉得可能有一些技巧或方法来做同样的事情。

静态变量声明(C)

以下两个static变量声明是否相同? 1。 static int var1; static int var2; static int var3; 2。 static int var1, var2, var3; 更具体地说,在情况2中,所有变量都是static ,还是只是var1 ?

我可以获得最佳性能制作静态变量吗?

为什么有些人这样做: char baa(int x) { static char foo[] = ” .. “; return foo[x ..]; } 代替: char baa(int x) { char foo[] = ” .. “; return foo[x ..]; } 在linux源代码应用程序上看起来很常见。 有性能差异? 如果有,有人可以解释原因吗? 提前致谢。

当我们声明静态变量时,编译器实际上做了什么?

我想知道实际内容是什么,编译器如何处理静态变量。 与自动变量不同,静态变量的值即使在块结束后仍然存在,但编译器实际上如何处理这个?

我可以在C中释放()静态和自动变量吗?

代码如下: #include int num = 3; // Static external variable int *ptr = # int main(void) { int num2 = 4; // Automatic variable int *ptr2 = &num2; free(ptr); //Free static variable free(ptr2); //Free automatic variable return 0; } 我尝试编译上面的代码,它的工作原理,我很好奇free()函数是否能够释放静态变量和自动变量? 或者基本上什么也没做?

在C之前调用main之前的一些函数

我想在main函数之前做一些事情。 我有多个源文件。 在每个文件中,有一些工作需要在main之前完成。 这在C ++中没有问题,但在C语言中存在问题。 在C ++中,这可以通过两种方式完成: 利用全局类/结构的构造函数。 将函数调用到全局变量 例如, static const int __register_dummy_ = __AddRegisterMetaInfo(…); 但是,在C中,无论哪种方式都是不可能的。 显然,没有构造函数。 所以,第一种选择本质上是不可能的。 我认为第二种选择是可能的,但不是用C语言编译的(我只用Visual C ++进行了测试。它给出了C2099 。)。 C只允许常量为非自动变量。 有没有办法在main之前调用一些函数? 编辑 :似乎很多人误解了我真正想做的事情。 很抱歉以简单的方式撰写此问题。 我需要做的是实现一种C ++运行时类信息function,就像MFC的方法一样 。 在这种方法中,我需要从所有源代码中获取一些信息。 例如,假设每个源文件都有一个类的定义,我想查看所有信息(例如,类名和父类)。 最简单的方法是在每个文件中放置一个静态构造函数,每个构造函数访问一个全局数据结构并注册其信息。 但是,我也想找到一种方法在C中实现类似的东西。所以,简单地在main调用pre_main_job不能成为我的答案。 请注意,这种滥用静态构造函数的方法也可以在LLVM编译器套件中找到。 每个优化/分析function都作为通过实现。 所有这些传递都是通过静态构造函数注册的。

在递归函数的情况下获得的值

任何人都可以向我解释这个程序输出背后的原因是0 0 0 0 0吗? 这里我们使用static variable var其值不会因函数调用而改变。 在递归调用期间, var的值将为4,3,2,1。 当var变为零时,递归终止并且控制转到printf语句。 为什么输出不是1,2,3,4 ? main(){ static int var=5; if(–var) main(); printf(” %d “,var); } 再次,如果你使用if条件var–那么程序输出将是-1 -1 -1 -1 -1 -1 ?

从C中的另一个文件访问全局静态变量

在C语言中,我想访问文件范围之外的全局静态变量。 让我知道最好的方法。 其中一种方法是为外部全局变量赋值静态变量的值, 在档案中 static int val = 10; globalvar = val; 在文件bc中 extern globalvar; 但在这种情况下,val(文件ac)中的任何更改都不会在(文件bc)中的globalvar中更新。 请让我知道如何实现同样的目标。 谢谢,Sikandar。