首页 > 解决方案 > C返回未指定函数LValue

问题描述

我正在尝试组织一个 C 程序,然后生成一个 lex 文件。但是代码中还有一个我不明白的错误

我以前从未使用过 C。

有错误的代码的第一部分:

/* addChar - a function to add nextChar to lexeme */
void  addChar() {
  if  (lexLen <= 98) {
    lexeme[lexLen++] = nextChar;
    lexeme[lexLen] = 0;
  }
  else
    printf("Error - lexeme is too long \n");
}

/* getChar - a function to get the next character of 
             input and determine its character class */
 void getChar() {
   if  ((nextChar = getc(in_fp)) = EOF) {
     if  (isalpha(nextChar))
      charClass = LETTER;
     else if  (isdigit(nextChar))
           charClass = DIGIT;
          else  charClass = UNKNOWN;
   }
   else
     charClass = EOF;
}

错误是:

program.c: In function ‘getChar’:
program.c:96:34: error: lvalue required as left operand of assignment
    if  ((nextChar = getc(in_fp)) = EOF) {```

标签: c

解决方案


这个:

if  ((nextChar = getc(in_fp)) = EOF) {

应该

if  ((nextChar = getc(in_fp)) == EOF) {
                              ^^

这将表达式从赋值更改为评估,从而消除了对lvalue


推荐阅读