我需要用宏初始化一个 char 数组作为它的值。 我尝试这样做:
char text[][255] = {
"",
/* 1 */ MACRO_("Foobar","Some text to translate"),
/* 2 */ MACRO_("Foobar","Some more text to translate"),
//...
};
但我收到此错误:
error: initializer element is not constant
我认为编译器无法解析该宏。 有办法让它工作吗?
最佳答案
更有可能的是,MACRO()
正在扩展为非常量,例如用于查找翻译的函数调用。至少在这种情况下通常会这样做。
与 GNU gettext ,它也使用宏来标记和查找要翻译的上行字符串,对于此类情况,您可以使用单独的仅标记宏(通常称为 N_()
),然后将字符串传递给运行时使用宏_()
之前。
您不能使用需要函数调用才能计算的数据来初始化数组,它必须是常量数据。
关于c - 宏作为 C 字符数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14979572/