【问题标题】:expected initializer before ‘->’ token“->”标记之前的预期初始化程序
【发布时间】:2013-01-27 01:16:50
【问题描述】:

我收到了来自 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" ) );
}

我哪里错了?

【问题讨论】:

  • cur_term 是否在头文件中定义为宏 (#define)?我在您发布的代码中的任何地方都没有看到 -&gt; 运算符。

标签: c++ compiler-errors g++


【解决方案1】:

clear_screenterm.h 中定义为cur_term-&gt;type.Strings[5](至少在我的系统上),因此-&gt; 存在问题。请参阅g++ -E 输出以了解预处理器的作用。所以本质上你需要使用一个不同于clear_screen 的名字来避免冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多