我应该在启动时还是第一次使用它时设置全局变量值? C ++

时间:2010-05-22 18:09:24

标签: c++ visual-c++ global-variables

我需要将值设置为几个全局变量,我应该将它设置为main / winmain函数吗?或者我应该在第一次使用每个var时设置它吗?

3 个答案:

答案 0 :(得分:4)

相反,如何不使用全局变量呢?

将变量作为函数参数传递给需要它们的函数,或者将指针或引用存储为使用它们的类的成员。

答案 1 :(得分:1)

您是否有可能不使用全局变量?计算其中任何一个都很贵吗?如果是这样,那么你有一个延迟初始化的参数。如果他们快速计算或总是会被使用,那么在启动时启动它们。没有理由不这样做,每次使用时都要检查初始化,这样你就可以避免头痛。

答案 2 :(得分:0)

当链接器将程序链接在一起时,全局变量(也称为可写静态数据)将分配给它们自己的内存部分(ELF .data部分),并具有预先分配给它们的值。这意味着编译器不需要生成初始化它们的指令。如果在main函数中初始化它们,编译器将生成初始化指令,除非它足够聪明以优化它们。

对于ELF文件格式肯定是这样,我不确定其他可执行格式。