例如,您可以通过检查是否定义了“WIN32”宏来检查是否使用了Windows。我想得到相同的行为,但检查是否使用Xlib。但我不知道Xlib定义了什么来知道它的定义。 如果您不知道我的意思,这里有一个例子:
#ifdef WIN32 //Check if WIN32 is defined
//Do something
#endif
我想改变它,以便在使用Xlib时做一些事情。
如果有一些语法错误,我很抱歉,但我不是母语为英语的人。
答案 0 :(得分:1)
宏WIN32
仅在您之前包含#include <windows.h>
或在编译器标志中设置宏(-DWIN32
)时定义。对于Xlib,如果之前包含X_PROTOCOL
,则可以使用非常相似的宏#include <X11/X.h>
。
#ifdef X_PROTOCOL //Check if X_PROTOCOL is defined
//Do something
#endif
如果之前包含_XLIB_H_
,另一种方法是使用#include <X11/Xlib.h>
,但我不会因为以下划线开头的标识符保留给实现,并且无法保证此标识符不会改变。
答案 1 :(得分:1)
您可以通过检查是否定义了“WIN32”宏来检查是否使用了Windows
WIN32
宏默认由针对Windows操作系统的编译器定义。其目的是让程序检测Windows OS API,而不一定是任何图形子系统。
X11不是和OS。它是可选的用户态软件,可在许多操作系统(包括Windows)下安装和运行。在为Windows编译X11程序时,将定义WIN32,就像任何其他Windows程序一样。
在安装了X11的系统上,没有编译器默认定义任何内容。
如果你想在构建时检测X11,你最好的选择可能是像GNU autotools或CMake这样的元构建工具。