C支持在编译时连接常量字符串。我可以为任何常数阵列做同样的事情吗? (例如,连接两个char **数组。)
答案 0 :(得分:3)
基本上没有,但您始终可以使用预处理器解决此问题。诀窍是定义没有花括号的数组:
#define ARRAY_ONE "test1", "test2", "test3"
#define ARRAY_TWO "testa", "testb", "testc"
现在,您可以使用逗号在编译时加入数组。 但是,要使用它们,您必须使用花括号来围绕它们或使用宏:
#define ARR(...) {__VA_ARGS__}
您现在可以使用单个数组或任何所需的连接,如下所示:
char *arr1[] = ARR(ARRAY_ONE);
char *arr2[] = ARR(ARRAY_TWO);
char *arrc1[] = ARR(ARRAY_ONE, ARRAY_TWO);
char *arrc2[] = ARR(ARRAY_ONE, ARRAY_TWO, ARRAY_ONE, ARRAY_ONE);
但是,使用宏来实现这样的结果是不好的做法。
答案 1 :(得分:2)
简短回答:不。
更短的答案:字符串文字确实是字符数组,但并非所有字符数组都是字符串文字。编译时连接仅适用于字符串文字。没有数组具有“功能”。
答案 2 :(得分:0)
No