Tag: extern

两个具有相同名称和类型的变量,在两个不同的.c文件中,使用gcc进行编译

这是交易。 我在两个不同的.c文件中有两个相同的全局变量,它们没有被声明为extern。 所以每个.c文件都应该看到自己的变量,对吧? 但是我得到了一些非常奇怪的行为,好像一个文件正在读取其他文件变量(将它们链接在一起之后)。 将“静态”限定符添加到两个变量定义似乎解决了这个问题。 所以我真正想知道的是,在没有’静态’限定符的情况下究竟发生了什么?

是否还需要extern“C”来将Cpp文件中使用的全局变量链接到cfile中定义的变量?

是否还需要extern“C”来将Cpp文件中使用的全局变量链接到ac文件中定义的变量? 它用于连接C ++文件中的函数,该文件在C文件中引用,因为C ++文件中的函数名称名称已被修改。 C编译器是否也改变了变量的名称?

将变量放入标题与将变量放入源中的区别

假设我使用变量声明头文件: int count; 然后在源文件中,我想使用count 。 我是否必须将其声明为: extern int count 或者我可以在我的源文件中使用它吗? 假设我有#include “someheader.h” 。 或者我应该在源文件中声明它? 将头文件中的count与源文件放在一起有什么区别? 或者没关系?

本地和寄存器变量可以声明为extern吗?

我一直想知道extern是否可以在本地声明和寄存器变量。 如果它可能会受到什么限制?

当我们以相同的代价获得全局变量时,静态局部变量的用途是什么?

在C中,当外部变量以相同的成本服务于其目的时,静态存储类的用途是什么。 两者都占用了可执行文件数据段中的存储空间。 我有更好的外部变量范围。如果我希望外部变量的范围是特定文件,我不要声明这个变量else where.i看到很多灵活性与全局变量静态局部变量 如果我们有变量的地址,我们可以引用函数外部的局部静态变量。本地静态变量的存储区将在数据段中不在函数的堆栈框架中。所以静态存储类带来的独特特性表。 我只是想知道静态是否有任何我不知道的微妙目的。

在定义变量时使用’extern’关键字

看到这个答案后,我有这个疑问。 在我的项目中,我看到了一些外部变量声明和定义如下: file1.h extern int a; 在file1.c extern int a=10; 但在我提到的链接中,它说在c文件中应该定义如下: int a = 10; 在定义期间添加extern关键字是否也有任何目的/意义。 或者重要的是顺便说一下?

可以在.h文件中声明静态全局变量吗?

static关键字将全局变量的范围限制为该转换单元。 如果我在.h文件中使用static int x并且每隔一个文件包含该.h文件,它们是否都属于同一个翻译单元? 那么,到处都不会看到x吗? 那么静态的作用是什么? 另外,有没有使用static const int x ,其中x是一个全局变量? 默认情况下,并非所有const全局变量都是静态的 并且const变量的范围仅限于TU,即使它被限制在文件中的for循环中?

指针数组 – 外部问题

文件1.c. int a[10]; 文件main.c: extern int *a; int main() { printf(“%d\n”, a[0]); return 0; } 给我一个段错误! 出了什么问题?

extern C不能在课堂上使用?

只想在Windows环境下确认VSTS 2008 + C ++项目,我们只能将extern C应用到function级别,而不能应用于类级别(这样所有成员函数都从类中使用C语言名称修改)? 我尝试了几种方法,但始终编译错误。 乔治,提前谢谢

在C中创建extern char数组

如何在C中创建外部字符数组? 我已经尝试了各种方法来定义char cmdval[128]但它总是说undefined reference to ‘cmdval’ 我想在first.c文件中的cmdval中放一个字符串,并在其他second.c文件中使用它。 我尝试添加一个带有extern char cmdval[128]的global.h文件,但没有运气。 更新: global.h extern char cmdval[128]; first.c #include “global.h” char cmdval[128]; function(){ strcpy(cmdval, “a string”); } second.c #include “global.h” function(){ printf(“%s \n”,cmdval); //error } 失败:(“未定义引用`cmdval’” 编辑:我在linux上工作(编辑一个迷你OS xv6,然后在qemu编译并运行它),我不知道它是否是一个障碍