flex警告多字符字符常量
flex warning multi charecter charecter const
edit:确实是对“\r\n”的检查让我很困惑,因为错误行是计数器而不是 "if"
我在使用 flex 时遇到了一个奇怪的问题,
在这段代码中,我试图计算一条评论最后有多少行,为此我在 "if" 语句
中更改了一个计数器
void commentHandler(int line){
int counter = 0;
if (1 == line){
printf("%d COMMENT 1\n",yylineno);
}
else{
for(int i=2 ; i< yyleng-2 ; i++){
if('/' ==yytext[i] && '*' == yytext[i+1]){
errorHandler(ERROR_NESTED_COM);
}
if('\n' == yytext[i] || '\r\n' == yytext[i]){
counter++;
}
}
printf("%d COMMENT %d\n", yylineno - counter, counter + 1);
}
}
warning: multi-charcter charecter constant [-Wmultichar]
因为这是我的硬件,所以我不能忽略警告,但无论我在其中放什么,它都会显示我以前从未见过的相同警告,我真的不知道出了什么问题。
这是不是一些与之矛盾的flex包装?我玩了计数器的名字,但它没有改变。
警告是什么意思?
您需要单独测试字符,而不是整体测试,但在这种情况下,您真正需要的是:
if ('\n' == yytext[i]) {
正如 rici 指出的那样,\r
检查实际上是无关紧要的。
edit:确实是对“\r\n”的检查让我很困惑,因为错误行是计数器而不是 "if"
我在使用 flex 时遇到了一个奇怪的问题, 在这段代码中,我试图计算一条评论最后有多少行,为此我在 "if" 语句
中更改了一个计数器void commentHandler(int line){
int counter = 0;
if (1 == line){
printf("%d COMMENT 1\n",yylineno);
}
else{
for(int i=2 ; i< yyleng-2 ; i++){
if('/' ==yytext[i] && '*' == yytext[i+1]){
errorHandler(ERROR_NESTED_COM);
}
if('\n' == yytext[i] || '\r\n' == yytext[i]){
counter++;
}
}
printf("%d COMMENT %d\n", yylineno - counter, counter + 1);
}
}
warning: multi-charcter charecter constant [-Wmultichar]
因为这是我的硬件,所以我不能忽略警告,但无论我在其中放什么,它都会显示我以前从未见过的相同警告,我真的不知道出了什么问题。
这是不是一些与之矛盾的flex包装?我玩了计数器的名字,但它没有改变。
警告是什么意思?
您需要单独测试字符,而不是整体测试,但在这种情况下,您真正需要的是:
if ('\n' == yytext[i]) {
正如 rici 指出的那样,\r
检查实际上是无关紧要的。