如果我像这样声明变量
int a/*comment*/ ; //This does not give any error .
int a/*comment*/bc; This gives error
现在我还不了解其背后的原因,据我了解,当在符号/读取之后第一次读取字符a时,它是否切换到DFA的其他状态以识别其他模式,因此不会出错在第二种情况下,在读取注释后,它会发现一些其他序列,这些序列不属于形式模式,因此在有限自动机的某些非最终状态下会因错误而停顿下来。
请清除这种困惑。
最佳答案
根据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;
从下一行的第一个位置开始。关于c - 下面的变量声明会导致词法错误还是句法错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34118903/