Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我试图通过修改一段代码来提供帮助,但恐怕我会冒犯“当您定义变量时,您只能在定义的范围内使用它”。
尝试通过文本字符串而不是复制代码来实现语言更改。所以我想说一下...
然后才能在代码内使用...
从我在这里阅读的内容来看,以上代码只会初始化{}中的文本字段?我是否需要将变量设置为NULL?请告诉我我遗漏了一些明显的东西。
通常,此类问题可以通过指针来解决,如下所示:
但就我个人而言,如果您不需要修改数组,那么在这种琐碎的情况下,对于数组使用字符串毫无意义。
我是否需要将变量设置为NULL?
这不是必需的,但通常被认为是好的做法。
对于您的特殊情况,有一种非常简单且相对可扩展的方式来进行本地化-使用数组:
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我试图通过修改一段代码来提供帮助,但恐怕我会冒犯“当您定义变量时,您只能在定义的范围内使用它”。
尝试通过文本字符串而不是复制代码来实现语言更改。所以我想说一下...
if (language == 0)
{
static const XCHAR text1[] = ("HELLO");
} else {
static const XCHAR text1[] = ("BONJOUR");
}
然后才能在代码内使用...
StCreate
(
ID_ST31,
20,
82,
780,
500,
ST_DRAW,
text1,
alt3Scheme
);
从我在这里阅读的内容来看,以上代码只会初始化{}中的文本字段?我是否需要将变量设置为NULL?请告诉我我遗漏了一些明显的东西。
最佳答案
您可以只使用带有三元运算符的指针:
const char* text1 = (language == 0) ? "HELLO" : "BONJOUR";
通常,此类问题可以通过指针来解决,如下所示:
const struct my_struct* actual_data;
if (cond) {
static const struct my_struct data = {...};
actual_data = data;
} else {
static const struct my_struct data = {...};
actual_data = data;
}
但就我个人而言,如果您不需要修改数组,那么在这种琐碎的情况下,对于数组使用字符串毫无意义。
我是否需要将变量设置为NULL?
这不是必需的,但通常被认为是好的做法。
对于您的特殊情况,有一种非常简单且相对可扩展的方式来进行本地化-使用数组:
static const char* const text1[LANGUAGE_COUNT] = {
"HELLO",
"BONJOUR",
"ПРИВЕТ",
...
};
关于c - 定义在范围之外使用的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36842501/