【发布时间】:2013-05-14 19:14:53
【问题描述】:
我正在开发一个多平台项目。我想要一种简单快捷的方式来管理特定于操作系统的包含,最好不用任何外部工具。
我想要这样的东西(我很清楚这是行不通的)
#define PLATFORM_A 1
#define PLATFORM_B 2
#ifndef TARGET_PLATFORM
//ERROR
#endif
#if TARGET_PLATFORM == PLATFORM_A
#define DIR "a"
#elif TARGET_PLATFORM == PLATFORM_B
#define DIR "b"
#define PLATFORM_INCLUDE(file) \
#include "platforms/" DIR "/" file
【问题讨论】:
-
如果您的 Makefile(由 configure 命令生成)注入这些常量,那将起作用。例如,如果你在 linux 上,你的 Makefile 将有
gcc -DPLATFORM=windows等等。然而,问题是你想做什么?例如,Win32 API 程序不会与 Qt 程序分布在同一源代码树中,但如果您尝试使用套接字,您的源文件可能会被 #if 条件语句所覆盖。
标签: c++