如何定义导出常量?
How do I define an exported constant?
我一直在尝试新的模块功能,但无法导出全局常量。导出似乎可以正常编译,但是在导入时编译器会抱怨未声明常量。我的代码:
test.cpp
export module test;
export struct my_type { int x, y; };
export constexpr int my_constant = 42;
export int my_function() { return my_constant; }
main.cpp
import test;
int main() {
my_type t{1, 2};
int i = my_function();
int j = my_constant; // <- error here
}
我做错了什么?我在 linux 上使用 g++ 11.1.0:g++-11 -std=c++20 -fmodules-ts test.cpp main.cpp -o main
错误信息是:error: ‘my_constant’ was not declared in this scope
const限定变量默认有内部链接,所以可能需要写成
export extern const int my_constant = 42;
根据 https://en.cppreference.com/w/cpp/language/storage_duration,export
定义应该使变量具有外部链接,因此您可能遇到了 C++20 尚未完全实现的角落之一。
只需使用inline
export inline constexpr int my_constant = 42;
我一直在尝试新的模块功能,但无法导出全局常量。导出似乎可以正常编译,但是在导入时编译器会抱怨未声明常量。我的代码:
test.cpp
export module test;
export struct my_type { int x, y; };
export constexpr int my_constant = 42;
export int my_function() { return my_constant; }
main.cpp
import test;
int main() {
my_type t{1, 2};
int i = my_function();
int j = my_constant; // <- error here
}
我做错了什么?我在 linux 上使用 g++ 11.1.0:g++-11 -std=c++20 -fmodules-ts test.cpp main.cpp -o main
错误信息是:error: ‘my_constant’ was not declared in this scope
const限定变量默认有内部链接,所以可能需要写成
export extern const int my_constant = 42;
根据 https://en.cppreference.com/w/cpp/language/storage_duration,export
定义应该使变量具有外部链接,因此您可能遇到了 C++20 尚未完全实现的角落之一。
只需使用inline
export inline constexpr int my_constant = 42;