global-variables相关内容
最近,我发现有一些情况是绝对违反C的ODR ++但在C编译器来编译确定。 例如,这种怪异的情况下(与我): 源1 INT VAR_GLOBAL = -3; 来源2 的#include<&stdio.h中GT; #包括LT&;&CONIO.H GT;无符号整型VAR_GLOBAL;诠释主(){ 的printf(“%d个\\ N”,VAR_GLOBAL); 残培(); 返回0;}
..
是否有声明为变静态 C和C ++之间的任何函数外任何区别。我读静态表示文件的范围和变量将不会是文件外部访问。我也看到,在C,全局变量静态。这是否意味着,在C全局变量不能在另一个文件被访问? 解决方案 没有,但在这方面的C和C ++之间没有差异。 读
..
#包括LT&;&stdio.h中GT; #包括LT&;&string.h中GT; 字符* Y; Y =(字符*)malloc的(40); //这里给出了一个错误 诠释的main() { 的strcpy(Y,“世界你好”); } 错误:冲突的类型'Y' 错误:'Y'的previous声明在这里 警告:初始化将指针整数,未作投 错误:初始元素不是常数 警告:数据定义没有类型或存储类 警告:传
..
可能重复:结果 静态VS全球 我感到困惑全局和静态全局变量之间的差异。如果静态意味着这个变量只对同一文件是全球性的,那么为什么在两个不同的文件名称相同的原因名称冲突? 有人能解释一下吗? 解决方案 全局变量(不是静态),在那里,当你创建的.o可供链接器使用的其他文件中使用文件。因此,如果有两个文件这样,你得到名称冲突 A : 交流转换器: 的#include<&stdi
..
我想用nftw在C遍历目录结构。 不过,鉴于我想做的事情,我没有看到周围使用全局变量的方式。 使用(n)的FTW都涉及做这样打印出的文件名的课本上的例子。我想,相反,采取的路径名和文件校验并将那些在一个数据结构中。但我没有看到一个很好的办法做到这一点,因为什么可以传递给nftw的限制。 我使用该解决方案包括一个全局变量。然后通过nftw调用的函数可以访问该变量,并添加所需的数据。 有任何合
..
好了,读“有点老”一书(以下简称“C语言程序设计”,第二版,由丹尼斯里奇),我来到了一个跨如下: 这是外部变量必须定义,只有一次,在任何函数之外;这留出存储它。变量也必须在想要访问它的每个函数声明 和我很喜欢 - ?!什么的 “变量,还必须在想要访问它的每个函数声明”。然后,我惊呆了一次: INT最大; / * ... * / 诠释的main() { EXTERN INT
..
我有一个叫做全局变量的main.c INT countboards 。在main()我通过(progserver.c)开始的pthread,侦听一个TCP-连接并运行。手段,这个线程将永远不会返回。在main()我进入功能 rmmain(...)这是在rm.c(RM =的ressource管理器)。在rm.c我读 countboards ,在我写这个变量的pthread的progserver.c(
..
问候, 我的项目结构如下: \\ - 基(C静态库) callbacks.h 的callbacks.c paint_node.c 。 。 * libBase.a\\ -app(C ++应用程序) main.cpp中 在C库'基地',我已经宣布全球函数指针为: 在singleheader文件 callbacks.h
..
我写一个C(共享)库。它开始了作为一个单一的翻译单元中,我可以定义一对静态全局变量,必须从外部模块隐藏。 现在该库已经成长,我想模块分解成几个较小的源文件。问题是,现在我有提到全局两种选择: 在每个源文件有私人副本,并通过功能莫名其妙地同步它们的值调用 - 这会非常难看非常快 删除静态定义,所以变量使用的extern 所有翻译单元共享 - 但现在,针对库链接的应用程序code可以访问
..
我不理解这个程序的输出: 的#include< pthreads.h中> #包括LT&;&stdio.h中GT; #包括LT&;&unistd.h中GT;INT I = 0;诠释的main() { 而(ⅰ3;) { 叉子(); 的printf(“%d个\\ N”,I); ++我; } } 输出是: 0 1 2
..
当我参加一次采访中,面试官问我这个问题。这记忆他们使用的是堆,栈等我GOOGLE了,但我没有得到任何明确的答案。 解决方案 $ _ POST 内部的内部创建的 php_auto_globals_create_post() 并通过提供 PG(http_globals)[TRACK_VARS_POST] ,这仅仅是一个参考的 http_globals 。 的上述定义 http_globals
..
在这个例子中,不正确需要 global_value 来声明挥发性? INT global_value = 0;无效美孚(){ ++ global_value; }空巴(){ some_function(++ global_value); 富(); some_function(++ global_value); } 我的理解是,挥发性是“预期”的的指针映射内存
..
当我写了下面的程序: 文件1: 的#include<&stdio.h中GT; INT全球; 无效print_global1(){ 的printf(“%P \\ N”,&安培;全局); } 文件2:的#include<&stdio.h中GT; 烧焦全球; 无效print_global2(){ 的printf(“%P \\ N”,&安培;全局); }
..
大多数我看到使用全局变量的反对的意义,因为它们是指多个线程,线程安全,等等。的问题 但在一个小的,单线程的,非操作系统,情况下,你有什么异议?就我而言,我写在“C”我的嵌入式系统,如果它很重要。我还对产品的唯一开发商。 为什么会消除全局变量让我的code更好? (读取多个答复后,我意识到我应该也指出,这一系统没有动态内存分配(例如malloc的),所有的记忆是在编译时静态分配。) 解决
..
如果我将变量声明为挥发,如果我不使用它的任何地方节目,将编译器优化变量? 在什么在这种情况下volatile变量的局部和全局声明的情况下? TQ。 解决方案 编译器可以,而且很可能将消除(忽略)未挥发性变量声明(但编译器不能消除未使用的全局变量定义 - 它必须承担一些其他翻译单元(TU)会引用它) 如果该变量是本地的功能和未使用的,它可以由编译器消除,而不管其波动。目前还不清楚,你可
..
例如: #包括LT&;&stdio.h中GT;INT富= 100;INT栏() { INT富; / *本地富= foo的全局,如何实施? * / 返回0; }诠释的main() { INT结果=巴(); 返回0; } 我觉得在功能栏中调用foo直接只会得到全局foo。我怎么可以参考当地的富?我知道在C ++中,有这种指针。但是,不C有相似的地方? 非常
..
好吧,我的学习的C ++,从来没有真正学会如何做的东西,是不是面向对象的。 我试图得到一点更多的经验,采用C风格的编码。 GobalInformation.h 的#pragma一次的#ifndef GLOBALINFORMATION_H #定义GLOBALINFORMATION_H#包括“MapInformation.h”命名空间GI { MapInformation mapInf;
..
我做了2个项目,第一个C和第二个在C ++中,具有相同的行为都工作。 C ++项目: header.h INT varGlobal = 7; 的main.c 的#include<&stdio.h中GT; #包括LT&;&stdlib.h中GT; 的#include“header.h”void函数(int i)以 { 静态INT A = 0; 一个++;
..
的#include<&stdio.h中GT;INT I = 10; INT J =; 诠释的main() { 的printf(“%D”,J); } 我得到一个错误,指出初始元素不是常量?这背后有什么原因呢? 解决方案 这背后的原因是什么? C(不像C ++)不允许与非常数值全局值初始化。 C99标准:第6.7.8: 在为具有静态存储期限为对象的初
..
在C 静态或的extern 全局变量默认?结果 如果全局变量默认都是静态的,则意味着我们将能够访问它们在一个文件中,但我们可以用不同的文件中的全局变量为好。结果 这是否意味着他们在默认情况下外部存储方式? 解决方案 如果您不指定存储类(也就是的extern 或静态关键字),则默认情况下全局变量的外部链接。从C99标准: §6.2.2标识符联系 3)如果一个对象或函数的文件范
..