Tag: 全局变量

Malloc函数(动态内存分配)在全局使用时导致错误

#include #include char *y; y=(char *)malloc(40); // gives an error here int main() { strcpy(y,”hello world”); } error: conflicting types for ‘y’ error: previous declaration of ‘y’ was here warning: initialization makes integer from pointer without a cast error: initializer element is not constant warning: data definition has no type or storage class warning: passing […]

在头文件中声明一个全局变量`extern const int`,但在源文件中只声明`int`

我正在试验GCC,发现你可以在头文件中声明外部变量const ,但在实现文件中保持它们是可变的。 编辑 :这实际上不起作用。 我将测试代码编译的唯一原因是因为我没有在“header.c”中包含“header.h”。 header.h: #ifndef HEADER_H_ #define HEADER_H_ extern const int global_variable; #endif header.c: int global_variable = 17; 这似乎是一个非常好的function,用于将global_variable readonly保存到header.h的用户,但保持它们可由实现(header.c)修改。 注意:以下代码只是这种声明方式如何阻止赋值给global_variable 。 #include “header.h” int main(void) { global_variable = 34; /* This is an error as `global_variable` is declared const */ return 0; } 因为我之前从未见过技术。 我开始怀疑它是否有效。 这是一个定义明确的行为,还是GCC没有提醒我的错误?

如何引用局部变量在C中共享全局变量的同名?

例如 #include int foo = 100; int bar() { int foo; /* local foo = global foo, how to implemented? */ return 0; } int main() { int result = bar(); return 0; } 我认为在function栏中,直接调用foo将获得全局foo。 我怎么能引用当地的foo? 我知道在C ++中,有这个指针。 但是,C有类似的东西吗? 非常感谢!

全局变量是否始终在C中初始化为零?

#include int a[100]; int main(){ printf(“%d”,a[5]); return 0; } 上面的代码总是打印’0’还是编译器特定的? 我正在使用gcc编译器,我输出为’0’。

如何声明和定义全局变量,以便正确地从所有头文件/源文件访问它们

好吧,我正在学习 C ++,从来没有真正学过如何做不是OO的东西。 我想尝试用C风格编写更多经验。 GobalInformation.h #pragma once #ifndef GLOBALINFORMATION_H #define GLOBALINFORMATION_H #include “MapInformation.h” namespace gi { MapInformation mapInf; }; #endif 我希望能够从我的项目中的每个头和cpp访问gi :: mapInf。 现在我在每个标题中都包含了globalinformation.h,所以我收到了多个定义的链接器错误。 我该如何解决这个问题?

Objective C定义UIColor常量

我有一个iPhone应用程序,我的主题有一些自定义颜色。 由于这些颜色将为我的UI修复,我想在要包含的类中定义颜色(Constants.h和Constants.m)。 我怎么做? (简单地定义它们不起作用,因为UIColors是可变的,并且会导致错误 – Initalizer不是恒定的)。 /* Constants.h */ extern UIColor *test; /* Constants.m */ UIColor *test = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]; 谢谢!

使用非常量初始化程序定义全局变量

#include int i=10; int j=i; int main() { printf(“%d”,j); } 我得到一个错误,说明初始化元素不是常量? 这背后的原因是什么?

为什么全局变量在单线程,非os,嵌入式应用程序中是坏的

我看到使用全局变量的大多数异议都有意义,因为它们涉及multithreading,线程安全等问题。 但是在一个小的,单线程的,非操作系统的情况下,你有什么异议? 就我而言,如果重要的话,我正在用“C”编写我的嵌入式系统。 我也是该产品的唯一开发人员。 为什么消除全局变量会使我的代码更好? (在阅读了几个响应之后,我意识到我也应该指出这个系统没有动态内存分配(例如malloc)。所有内存都是在编译时静态分配的。)

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

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

查找数据段的地址范围

作为编程练习,我在C中编写了一个标记 – 清除垃圾收集器。我希望扫描数据段(全局等)以获得指定内存的指针,但我不知道如何获取该段的地址。 我怎么能这样做?