对静态常量变量的未定义引用collect2: ld返回1退出状态

undefined reference to a static constant variable collect2: ld returned 1 exit status

本文关键字:ld 返回 状态 退出 collect2 引用 常量 静态 变量 未定义      更新时间:2023-10-16

请帮帮我

错误详情如下:

src/a.cpp:2972:未定义引用' B::XTT collect2: ld返回1退出状态

B::XTTB结构体中的静态常量变量。

2969     if (index != B::XTT) {
2970         index_map_iter = lookup_index.find(merchandising_index);
2971         merchandising_index = index_map_iter != output_index.end() ? 
2972                index_map_iter->second : B::XTT;

很奇怪,我第一次在2969行使用B::XTT时,它没有产生错误。但是在2972我使用B::XTT,它产生了一个错误。

如果我在使用g++命令时添加-O2选项,它不会产生错误。但是如果没有-O2,会产生错误

声明静态const成员变量

class foo {
    // omitted other members
    static int MyConst;
};

你必须在一个编译单元中定义它。

int foo:MyConst = 42;