1

我从 g++ 收到奇怪的错误。错误提示的过程在其他项目中编译得很好,但在这里不知何故。这是 g++ 抱怨的:

g++ -c -Wall -pedantic clear_screen.cpp -lcurses -o .clear.o
clear_screen.cpp:6:6: error: expected initializer before ‘->’ token
make: *** [.clear.o] Error 1

相应的 makefile 部分如下所示:

CC=g++
CFLAGS=-c -Wall -pedantic
COMP=$(CC) $(CFLAGS)
.clear.o : clear_screen.cpp
    $(COMP) clear_screen.cpp -lcurses -o $@

有问题的文件由以下几行组成:

#include <unistd.h>
#include <term.h>

void clear_screen() {
  if ( !cur_term ) { // line 6 is here
    int result;
    setupterm( NULL, STDOUT_FILENO, &result );
    if (result <= 0) return;
  }
  putp( tigetstr( "clear" ) );
}

我哪里错了?

4

1 回答 1

1

clear_screen被定义term.hcur_term->type.Strings[5](至少在我的系统上),因此->. 查看g++ -E输出以了解预处理器的作用。所以本质上你需要使用一个不同的名字clear_screen来避免冲突。

于 2013-01-27T01:24:34.127 回答