在C头声明和定义静态变量?

在C头声明和定义静态变量?,第1张

概述Many other questions处理如何通过在头文件中声明变量并在.cpp文件中定义(分配)来分配变量. 我想做的不是为我的类使用任何.cpp文件,并将所有函数定义为内联(在头文件中).我遇到的问题是如何定义静态成员变量,以便即使.h文件包含在多个编译单元中,我也没有得到“第一个定义的”链接器错误. 我打开预处理器黑客等,如果它完成工作.我只想避免任何.cpp文件. 如果重要的是我使用GC Many other questions处理如何通过在头文件中声明变量并在.cpp文件中定义(分配)来分配变量.

我想做的不是为我的类使用任何.cpp文件,并将所有函数定义为内联(在头文件中).我遇到的问题是如何定义静态成员变量,以便即使.h文件包含在多个编译单元中,我也没有得到“第一个定义的”链接器错误.

我打开预处理器黑客等,如果它完成工作.我只想避免任何.cpp文件.

如果重要的是我使用GCC.

解决方法 您可以滥用单例模式,如果您真的必须避免任何.cpp文件:
class Foo {    public:        static bar& getMyStatic() {            static bar bar;            return bar;        };};

这是因为现在变量是一个函数内的一个静态变量,静态在函数上下文中具有不同于在类上下文中的含义.对于函数,链接器可以识别多个相同的定义并抛出副本.

但是,当然,我强烈建议不要使用.cpp文件:这意味着你会陷入一种情况,在这种情况下,你必须构建整个程序,或至少大部分的程序.您所做的每一个改变都将需要一个完整的重建,这会显着减慢您的更改 – 编译测试周期.对于可能不是问题的非常小的项目,但它是中等到大的项目.

总结

以上是内存溢出为你收集整理的在C头声明和定义静态变量?全部内容,希望文章能够帮你解决在C头声明和定义静态变量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1245963.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存