【发布时间】:2016-05-23 13:43:30
【问题描述】:
环境 Ubuntu 16.04 G++ 5.3.1
我有一个包含以下内容的头文件,旨在根据平台包含不同的 .h 文件:
#ifdef _WIN32
#include "curses.h"
#else
#include <ncurses.h>
#endif
这在 Windows 中运行良好,但在 Ubuntu 中我收到有关 curses.h 文件的错误:
In file included from /usr/include/unctrl.h:54:0,
from /usr/include/curses.h:1694,
from headers/command_window.h:8,
from command_window.cpp:1:
headers/curses.h:900:19: error: macro "clear" passed 1 arguments, but takes just 0
int clear(void);
编译时使用:
g++ -g -lncurses -std=c++11 -Iheaders -c -o command_window.o command_window.cpp
为什么要在此处涉及用于 PDCurses 的 windows 特定文件 headers/curses.h?
【问题讨论】:
-
使用this old answer 了解如何转储所有预定义的宏。您也可以在预处理后停下来查看编译器看到的源代码。
-
_WIN32 似乎不在使用旧答案的定义列表中