global-variables相关内容

全局变量(再次)

我不断听到全局变量应该从不 被使用,但我倾向于拒绝 从不 “规则为热门。是否真的没有异常? 例如,我目前正在使用SDL在c ++中编写一个小游戏。在我看来,让一个全局变量有一个指向屏幕缓冲区的指针很有意义,因为所有代表不同类型的东西在游戏中的不同类将需要blit到它,并且只有一个屏幕缓冲。 请告诉我是否存在例外情况,如果不是的话: 为什么不,或对他们有什么不好,他们应该不惜一切代 ..
发布时间:2016-10-20 22:35:09 C/C++开发

堆还是堆?当在C ++中的函数调用中使用常量字符串时

考虑函数: char * func() { return“Some thing” ; } 是常量 string ( char 数组)“某事”存储在堆栈中作为函数调用的本地或堆? 我是 函数被多次调用,有多少副本“有事”在内存中? (和是堆还是堆栈?) 解决方案 字符串字面量“某事”是 const char * 因此,它们既不在堆上也不在栈上,而是在 ..
发布时间:2016-10-19 21:02:15 C/C++开发

在全局范围内使用静态变量和函数

当它位于.cpp文件的全局范围内,而不是在函数中时,是否可以将变量标记为 static ? 你可以使用static关键字的函数吗?如果是,它们的用途是什么? 解决方案 在这种情况下,关键字static表示函数或变量只能由代码使用在同一个cpp文件中。 这是避免在大软件中发生名称冲突的好习惯,当你知道你的全局函数时,其他模块中不需要变量。 ..
发布时间:2016-10-19 19:56:13 C/C++开发

全局变量和范围 - C ++

我有一个小问题在做一个全局变量的工作。我使用Visual Studio 2008和标准C ++。 我有两个项目,一个是静态库,第二个是使用这个库的测试程序。我在global.h中有一个全局变量,例如 #ifndef GLOBAL_H #define GLOBAL_H #include extern std :: string globalWord ..
发布时间:2016-10-17 10:28:52 C/C++开发

你应该把全局常量放在C ++程序中?

在C ++应用程序中将全局常量放在哪里?例如你会把他们在一个类吗?在结构中? 解决方案 我将使用一个命名空间作为与单个类非常相关的全局常量。在后一种情况下,我会把它们放在那个类中。 真的全局(应用程序级别)常量应该在应用程序的命名空间只要你的应用程序在它自己的命名空间内,因为它应该是)。对于模块级常量,模块自己的命名空间是自然的地方。 ..
发布时间:2016-10-17 09:12:12 C/C++开发

如何防止我的“未使用”全局变量编译出来?

我使用静态初始化来简化在C ++中用工厂注册一些类的过程。不幸的是,我认为编译器优化了“未使用”对象,这意味着在它们的构造函数中做有用的工作。有没有办法告诉编译器不优化一个全局变量? class SomeClass { public:$ SomeClass(){ / *做一些有用的事情* / } }; SomeClass实例; 我的断点在SomeClass ..
发布时间:2016-10-14 21:37:40 C/C++开发

创建全局变量导致链接器错误

我有一个MFC应用程序AVT_testapp,并在头文件(AVT_testappDlg.h)我试图创建一个变量所有的函数,类等之外,以使其全局。每当我尝试这样做(比如我尝试 int x = 7 ),我得到的错误: 1> AVT_testappDlg.obj:error LNK2005:已在 AVT_testapp.obj 1> .. \中定义的“int x”(?x @@ 3HA) . ..
发布时间:2016-10-14 21:08:31 C/C++开发

C ++全局变量声明

我想要做的只是在头文件中定义一个变量,并在两个不同的cpp文件中使用它,而无需重新定义每次包含该标题的变量 这是我的尝试: Variables.h #ifndef VARIABLES_H //标题卫兵 #define VARIABLES_H static bool bShouldRegister; #endif (我也试过extern但没有改 ..
发布时间:2016-10-14 19:59:47 C/C++开发

什么是全局变量的默认存储类?

全局变量的默认存储类是什么? 在web上搜索时,我发现一些网站说它是 static 。但是,静态意味着内部链接和变量不能在文件范围外可用,即它不应该可用于其他目标文件。但是,仍然可以使用 extern int i 的声明访问其他文件。 static 到全局变量,然后在文件范围之外不可用。 然后,什么是正确的默认存储类的全局变量? 解决方案 默认存储持续时间是静态的,你不是 ..
发布时间:2016-10-14 12:17:45 C/C++开发

在C ++静态库中共享全局变量

我有一个MS C ++项目(我们称之为项目A),我目前正在编译为静态库(.lib)。它定义了一个全局变量foo。我有另外两个项目,分别编译(分别称为B和C),每个链接共享静态库A。B和C是dll的,最终加载在同一个进程。我想在同一个过程中在B和C之间共享一个来自A的foo实例:单例。我不知道如何完成单例模式这里与项目A,因为它被静态编译成B和C单独。如果我在B和C中声明foo为extern,我在B ..
发布时间:2016-10-14 10:39:57 C/C++开发

静态初始化和销毁​​静态库的全局变量不会发生在g ++

直到一段时间以前,我认为.a静态库只是一个.o对象文件的集合,只是归档它们,而不是使它们处理不同。但是与.o对象链接,并与包含.o对象的.a静态库链接显然不一样。我不明白为什么... 让我们考虑下面的源代码文件: // main.cpp #include int main(int argc,char * argv []){ std :: cout ..
发布时间:2016-10-14 10:15:59 C/C++开发

局部范围静态变量的零初始化和静态初始化

我在Google上查看了有关 C ++初始化的几个帖子,其中一些帖子在StackOverflow上指向我。我从这些帖子中挑选的概念如下: C ++初始化的顺序是: 零初始化; 静态初始化; 动态初始化。 首先是已初始化,然后是静态初始化。 有关初始化问题(存储类问题也可能有相关问题)的几个查询: 全局对象(未定义静态关键字)也是静态对象? 也通过上述两个步骤以静 ..
发布时间:2016-10-13 12:18:29 C/C++开发

C ++单例与全局静态对象

我今天的一个朋友问我为什么应该更喜欢使用单例对全局静态对象? 我开始解释的方式是单例可以有状态与静态全局对象不会...但是我不能确定...因为这在C ++ ..(我是从C# ) 这些优点是什么? (在C ++中) 解决方案 实际上,在C ++首选方式是本地静态对象。 打印机thePrinter(){ static打印机打印机; return printer; } ..
发布时间:2016-10-13 10:06:10 C/C++开发

当动态链接时,共享库中的全局变量和静态变量会发生什么?

我试图理解当全局变量和静态变量动态链接到应用程序时会发生什么。 通过模块,我的意思是每个项目在一个解决方案(我的工作很多与visual studio!)。这些模块内置在* .lib或* .dll或* .exe本身中。 我理解应用程序的二进制文件包含全部和所有 当数据段中的个别翻译单元(目标文件)此应用程序使用带有加载时动态链接的模块A?我假设DLL有一个部分为其全局和静态。操作系统是 ..
发布时间:2016-10-11 23:25:29 C/C++开发

C ++为全局和类静态变量调用析构函数?

从我的示例程序,它看起来像在两种情况下调用析构函数。在什么时候它被称为全局和类静态变量的析构函数,因为它们应该被分配在程序堆栈的数据部分? 解决方案 从C ++ 03标准的第3.6.3节: 静态存储持续时间初始化对象的析构函数(在块范围或在命名空间范围声明)作为从main返回和作为调用exit(18.3)的结果的结果被调用。这些对象以它们的构造函数的完成或其动态初始化的完成的相反顺序 ..
发布时间:2016-10-11 22:13:52 C/C++开发

是std :: cout保证被初始化吗?

我对C ++的了解是,不应假设全局实例的构造(和破坏)的顺序。 全局实例,其在构造函​​数中使用 std :: cout 析构函数,我有一个问题。 std :: cout 也是iostream的全局实例。 std :: cout 保证在任何其他全局实例之前初始化? 我写了一个简单的测试代码,它工作正常,但仍然不知道为什么。 #include ..
发布时间:2016-10-11 21:49:19 C/C++开发

它是不好的做法,有一个静态类的状态?

我愿做这样的事情: 公共类Foo { //大概真的一个GUID ,但我在这里使用一个字符串为简单起见。 字符串ID {搞定;组; } int数据{搞定;组; } 公共美孚(int数据){ : } : } 公共静态类FooManager { &字典LT;字符串,富> FOOS =新词典<字符串,富> (); 公共静态美孚获取(字符串ID){ ..
发布时间:2016-10-04 22:16:04 C#/.NET

当使用静态变量?

我目前在做C#项目有很多的渲染,并在整个几乎所有的班级有被用于渲染的缩放整数类型的恒定值。我知道我可以在一个地方作为一个普通变量定义这个常量,然后通过周围,但是,这个seemes真的很麻烦。什么时候可以接受的使用静态变量在C#中?我的问题最简单的解决方案是创建一个包含所有其他类可以引用静态变量的类 - 那会是糟糕的设计。 解决方案 没有设计不错。事实上,有一个公开的静态方法和静态价值的共同 ..
发布时间:2016-10-01 01:08:16 C#/.NET