Tag: 静态

静态全局变量和静态volatile变量之间有什么区别?

我在文件范围中使用了静态全局变量和静态volatile变量, 两者都由ISR和主循环更新,主循环检查变量的值。 在优化过程中,全局变量和volatile变量都不会被优化。 因此,全局变量不是使用volatile变量,而是解决问题。 那么使用全局变量而不是volatile是好的吗? 使用静态volatile的任何具体原因?? 任何示例程序都是可观的。 提前致谢..

初始化标头中的静态变量

我是C语言编程的新手,所以我尝试了许多不同的东西来尝试并熟悉语言。 我写了以下内容: 文件q7a.h : static int err_code = 3; void printErrCode(void); 文件q7a.c : #include #include “q7a.h” void printErrCode(void) { printf (“%d\n”, err_code); } 文件q7main.c : #include “q7a.h” int main(void) { err_code = 5; printErrCode(); return 0; } 然后我在makefile中运行以下命令(我使用的是Linux操作系统) gcc –Wall –c q7a.c –o q7a.o gcc –Wall –c q7main.c –o q7main.o gcc q7main.o q7a.o –o q7 […]

C中与static关键字的内部链接

我知道static是C中的一个重载关键字。在这里,我只关心它作为一个关键字用来强制内部链接。 如果你在.c文件中声明了一个全局变量,那么使用static和不使用static什么区别? 无论哪种方式,没有其他.c文件可以访问该变量,因此该变量基本上是文件的“私有”,有或没有static关键字。 例如,如果我有一个文件foo.c ,并且我声明了一个全局变量: int x = 5; 该变量x仅对foo.c代码可用(除非我在一些带有extern关键字的共享头文件中声明它)。 但是如果我没有在头文件中声明它,那么如果我输入的话会有什么不同: static int x = 5 。 无论哪种方式,似乎x在这里都有内部联系。 所以我对这方面static的目的感到困惑。

何时将静态函数定义放在C中的头文件中?

我遇到了一些在头文件中有一个大的静态函数的代码,我只是好奇它什么时候/它不好。 例如,如果许多.c文件包含标题,为什么不直接定义非静态函数并将其链接? 关于何时/何时不将静态函数定义放在C中的头文件中的任何建议或经验法则,我们将不胜感激, 谢谢

C中的全局变量是静态的还是不是?

默认情况下,C static或extern是全局变量吗? 如果全局变量默认是静态的,那么它意味着我们可以在单个文件中访问它们,但我们也可以在不同的文件中使用全局变量。 这是否意味着默认情况下它们具有外部存储?

为什么不能使静态数组的大小变量?

可能重复: 我们可以给静态数组的大小一个变量 我在其中一个子文件中定义一个数组,如下所示。 static int arr[siz]; 这里siz是子文件可用的全局变量。 但是gcc编译器会产生以下错误: : : error : storage size of ‘arr’ isn’t constant 为什么我不能定义可变大小的static数组? 编辑:这似乎只是static int类型的问题。 如果我将arr的变量类型从static int更改为int ,则即使数组的大小仍依赖于变量siz ,错误也会消失。

C中文件范围的可变修改数组

我有一些像这样的代码: static int a = 6; static int b = 3; static int Hello[a][b] = { { 1,2,3}, { 1,2,3}, { 1,2,3}, { 1,2,3}, { 1,2,3}, { 1,2,3} }; 但是当我编译它时,它说错误: 在文件范围内可变地修改了“Hello” 怎么会发生这种情况? 我该怎么办呢?