error C2137:空字符常量

如果在C代码中定义一个字符,并且用空字符''(即单引号之间不包含任何内容),那么编译器就会报C2137的错误。

char ch = '';//ch被初始化为空字符常量

那为什么C里面不能有空字符常量呢?这是因为空字符常量不符合C89中对Character Constant的定义,下面是C89中对Character Constant定义的截图:

error C2137:空字符常量_第1张图片


可以看到,在Syntax中对character-constant的定义中,单引号之间必须有c-char-sequence。

做为比较,下面来看一下C89中对字符串常量,也就是string literal的定义:

error C2137:空字符常量_第2张图片

可以看到,在Syntax中对string-literal的定义中,双引号之间的内容是可选的(由下标opt表示),因此,我们在C语言中就可以进行如下初始化:

char *str = "";


你可能感兴趣的:(c/c++)