当前位置:  开发笔记 > 编程语言 > 正文

下面的变量声明是否会导致词法错误或语法错误?

如何解决《下面的变量声明是否会导致词法错误或语法错误?》经验,为你挑选了3个好方法。

如果我声明变量就好

int a/*comment*/ ; //This does not give any error .
int a/*comment*/bc; This gives error

现在我没有得到这背后的原因,据我说,当符号/被读取后第一次读取字符a时,它会切换到DFA的其他状态以识别其他一些模式,因此没有错误在读取注释后的第二种情况下,它会找到一些不属于正式模式的其他序列,因此它会在有限自动机的某些非最终状态中停止,因为它会产生错误.

请清除这种困惑.



1> Leushenko..:

C11标准第5.1.1.2节"翻译阶段",第3阶段:

...每个注释都被一个空格字符替换....

在C编译的预处理阶段(之前,之前)替换注释.这是在"真正的"解析发生之前.因此,注释被认为等同于C语言主要部分中的空格.



2> Vlad from Mo..:

根据C标准(5.1.1.2翻译阶段)

3. ...Each comment is replaced by one space character. 

这样就行了

int a/*comment*/bc; 

翻译阶段后相当于

int a bc; 

但你可以写:)

int a\
bc; 

只要bc;从下一行的第一个位置开始.



3> Karoly Horva..:

在预处理期间,注释被替换为单个空格.

您的代码变为:

int a bc;

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有