具体包括C++平台
C++ Platform specific includes
我正在进行一个多平台项目。我想要一种简单快捷的方式来管理操作系统特定的包含,最好不用任何外部工具。
我想要这样的东西(我很清楚这行不通(
#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
我经常看到的一个设置如下:
// platform.h
#if defined PLATFORM_A
#include "platform_a.h"
#elif defined PLATFORM_B
#include "platform_b.h"
#else
// #pragma error or whatever
#endif
然后在必要时#include "platform.h"
。
如果不同平台有相同的文件树,则可以在源代码中仅为include文件指定文件名,并使用依赖于平台的include目录。该目录可以通过环境变量轻松配置。
您可以拥有由平台本身定义的预处理器指令。通过这种方式,您可以使用:
#ifndef MAC // MAC performs #define MAC
#ifndef WINDOWS // Windows performs #define WINDOWS
#ifndef UNIX // Unix performs #define UNIX
// ERROR
#endif
#endif
#endif
尝试在字符串之间使用+。这应该是C++语法。
所以类似于:
#define PLATFORM_INCLUDE(file)
#include "platforms/" + DIR + "/" file
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 如何基于平台在制作文件中制作if语句?
- 在 Linux 平台的 C++ 中动态加载 DLL
- 无法使用 aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 编译器交叉编译 QNX 平台的
- 如何判断类型双关语在我的平台上是否可以?
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- 如何实现具有多个平台__FILE__和__LINE__信息的 C/C++ 可变参数日志记录宏?
- 操作系统平台支持宏和提升库
- 平台游戏 - 下车时避免与平台碰撞
- NPM 安装:找不到平台工具集 = v141
- 如何在 64 位平台上计算 32 位哈希C++?
- 我的代码在不同的平台上给出不同的输出
- 是否有任何 2 补充平台/编译器,其中有符号移位不做通常的事情?
- 哪些 C++ 数据类型是 Metal 和所有其他 C++ 平台共有的
- 如何创建独立于平台的宏来包装编译器扩展?
- 多平台库设计.最佳实践
- 如何在linux平台上表达openGL glDebugOutput / glDebugMessageCallback
- 将vector<vector<double>>从x86平台中创建的一个进程发送到x64中构建的另一个进程的最快方法是什么
- 构建在VS 2013中找不到平台工具集= 'v141'