【发布时间】:2009-06-08 08:37:28
【问题描述】:
我想做以下事情
char a[] = { 'A', 'B', 'C', 'D'};
但我不想单独写这些字符。我想要类似的东西
#define S "ABCD"
char a[] = { S[0], S[1], S[2], S[3] };
但这不会编译(gcc 说'initializer element is not constant')。
我尝试将#define 行替换为
const char S[] = "ABCD";
但这似乎没有帮助。
我怎样才能做到这一点(或类似的东西),让我把“ABCD”写成一个普通的“字符串”,而不是四个单独的字符?
附:似乎人们没有正确阅读问题...
我无法编译以下代码:
const char S[] = "ABCD";
char t[] = { S[0], S[1], S[2], S[3] };
char u[] = { S[3], S[2], S[1], S[0] };
【问题讨论】:
-
为什么不直接使用 char a[]="ABCD";
-
绝对应该可以。你是怎么编译的?您将哪些选项传递给 gcc?
-
请解释为什么您希望使用单个字符分配将 char 字符串复制/分配给另一个 char 字符串。
-
@nik:我编辑了问题来解释这一点,请参阅“P.S.”下方的代码
-
在引用 S 中的任何条目之前,编译器可能想知道 t 和 u 的大小。尝试将 t[] 更改为 t[4] 并将 u[] 更改为 u[4]。
标签: c