灵活警告多字符字符常量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了灵活警告多字符字符常量相关的知识,希望对你有一定的参考价值。

edit:确实是对' r n'的检查,这使我感到困惑,因为错误所在的行是计数器而不是“ if”]

我在使用flex时遇到了一个奇怪的问题,在这段代码中,我试图计算注释的最后几行,为此,我在“ if”语句中更改了一个计数器

void commentHandler(int line){
    int counter = 0;

    if (1 == line){
        printf("%d COMMENT 1
",yylineno);
    }
    else{
    for(int i=2 ; i< yyleng-2 ; i++){
        if('/' ==yytext[i] && '*' == yytext[i+1]){
            errorHandler(ERROR_NESTED_COM);
        }
        if('
' == yytext[i] || '
' == yytext[i]){
            counter++;
        }
    }
    printf("%d COMMENT %d
", yylineno - counter, counter + 1);
    }
}

但是当我编译它时,它显示以下警告:

warning: multi-charcter charecter constant [-Wmultichar]

因为这是我的硬件,所以我不能忽略警告,但是无论我在其中放什么,它都显示了我从未见过的警告,我也不知道到底出了什么问题。

这与flex的包装是否矛盾?我使用了计数器的名称,但没有改变。

警告是什么意思?

答案

您需要单独测试字符,而不是合计,但在这种情况下,您真正​​需要的是:

if ('
' == yytext[i]) {

如rici所指出, 检查实际上是多余的。

以上是关于灵活警告多字符字符常量的主要内容,如果未能解决你的问题,请参考以下文章

现有个20000多字符数的数据怎么导入到oracle表格中,oracle数据库Crate表格用哪种数据类型?

C++ 数组中的多字节 UTF-8

C 中的 Vigenere 代码因多字符键而崩溃

关于Unicode和多字符字集。

c语言符常09

标准 C 库中是不是有 strchr() 的多字符版本?