C const字符串声明出错

时间:2014-03-07 07:15:20

标签: c compiler-errors

const char* const back_slash = "\\";
const char* const open_braces ="[";

const char* const array[][2] = {

   {
     back_slash,
    open_braces,

    },
};

在这种情况下,我正在

错误:初始化元素不是常量

你能帮忙吗?

4 个答案:

答案 0 :(得分:3)

在第6.7.8 / 4节中:

  

具有静态存储持续时间的对象的初始值设定项中的所有表达式都应为常量表达式或字符串文字。

在C语言中,术语“常量”是指文字常量(如1,'a',“[”等)。 back_slashopen_braces不是编译时常量。

答案 1 :(得分:0)

数组初始值设定项需要是以逗号分隔的常量表达式列表;你正在使用变量。

答案 2 :(得分:0)

这些是const - C的限定变量,所以只是变量而不是初始化上下文中的常量。使用define来命名这样的文字:

#define back_slash "\\"
#define open_braces "["

答案 3 :(得分:0)

你试图太迂腐:C没有真正的编译时const声明(带有类型)。一种方法是,使用const数组部分进行编译是使用#define声明反斜杠和开括号(括号'[',括号'{'),除非你在其他地方需要它们。关于const声明的注意事项:人们会期望在'const int i = 5'之后,我可以在代码中自由使用并且不会出现在目标文件中。确实如此,这可能会让您陷入一个小型的嵌入式系统。