C 静态类成员未在 *静态库 *中初始化
C++ static class member not initialized in a * static library *
我目前正在面临C 的烦人问题。
实际上,我什至不明白为什么我在过去20年中没有面对它:(
在我当前的上下文中,我们大量使用C 可执行文件(主要在Linux嵌入式系统中) stat上与我们的专有静态LIB链接在一起。而且我们确实出于技术和优化原因使用静态液体。
在过去的几年中,确实,我曾经创建共享的lib ...
所以我开始与静态课程成员一起写一些课程。如下:
class Inner
{
public:
Inner()
{
std::cout << "CTOR Inner" << std::endl;
}
};
class A
{
static Inner _inner;
...
};
// in the .cpp
Inner A::_inner;
///////////////////////
非常基本的用例,不是吗?
但是在与LIB相关的单位测试中,我在控制台中看不到std::cout
语句。鉴于,如果我将我的课内内部和a移动到可执行的源代码中...
我确定这是一个非常基本的问题,我意识到过去几年我从未面临过。这是与编译器有关的问题吗?请注意,我在Windows和Linux上测试了两个案例(Debian,GCC 4.9)。
欢迎任何想法。
z。
您必须实际使用:: _内部或不包括代码的那一部分。要么在该文件中使用其他内容。链接器不必在不使用的翻译单元中链接,即使它们具有可观察到的副作用。
如何强制包含"未使用"库中的对象定义
相关文章:
- 使用g++静态初始化带有命名标签的嵌套C++结构
- 静态初始化的反义词是什么?
- 在静态初始化期间运行代码
- 结构数组的嵌入式C++静态初始化
- 初始化与类类型相同的静态成员(静态初始化顺序问题)
- 使用 constexpr 和 std::array 进行静态初始化来替换动态初始化的 std::vector 的闰年
- MSVC 2017 在单个翻译单元中违反静态初始化顺序
- VC++6 线程安全静态初始化
- 具有必要副作用的静态初始化被优化掉了
- 未使用全球的静态初始化器
- w/ w/结构带char缓冲液的静态初始化[]
- 静态初始化的对象不能放在块中尝试
- 功能指针的静态初始化
- lambda(或函数)C++中的静态初始化
- C++静态初始化顺序:添加到映射中
- 复杂类型数组的静态初始化
- C++ - 在派生类中静态初始化受基类保护的成员变量
- 静态初始化插件工厂
- 静态初始化包含功能指针的对象的constexpr std ::数组
- 找出静态初始化是否结束