[英]Macros as values in C char array
我需要用宏来初始化一个char数组作为它的值。 我试过这样做:
char text[][255] = {
"",
/* 1 */ MACRO_("Foobar","Some text to translate"),
/* 2 */ MACRO_("Foobar","Some more text to translate"),
//...
};
但我得到这个错误:
错误:初始化元素不是常量
我认为编译器无法解析宏。 有没有办法让这项工作?
MACRO()
更有可能扩展为非常量的东西,例如查找翻译的函数调用。 这至少是在那些情况下通常所做的事情。
使用GNU gettext ,它也使用宏来标记和查找翻译的上行字符串,在这些情况下使用单独的仅标记宏(通常称为N_()
),然后将字符串传递给运行时宏_()
在使用它之前。
您不能使用需要函数调用的数据初始化数组才能进行计算,它必须是常量数据。
> MACRO_ calls a function which translates the text. It's not my solution but I have to work with it
事实是,你不能在编译时使用来自MACRO_
数据初始化你的数组,因为它调用了一个函数。 然而,一切都不会丢失。 您可以在运行时执行此操作
例如:
#define MACRO_ ...//whatever it does
int main()
{
char text[10][255] = {0}; // you'll have to set that first value
strcpy(text[0], MACRO_("Foobar","Some text to translate"));
strcpy(text[1], MACRO_("Foobar","Some more text to translate"));
...
根据您的代码, MACRO_
作用以及您传入的内容,您可以在循环中执行此操作,这将为您节省一些写入,但这将解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.