【发布时间】:2016-09-24 22:47:22
【问题描述】:
除了最佳实践之外,是否可以制作一个 C++ 预处理器宏,该宏会生成一个有效的 #include 语句,稍后会导致包含一个文件?
示例
#define MY_INCLUDE magic_goes_here
MY_INCLUDE
//This would be substituted with #include "somefile.h" and then later evaluated to include that file
用例
您可能想知道,这是我的用例:
我想遵循DRY principle 并且只指定 OpenGL 版本和配置文件以在我的代码中使用 ONCE。不幸的是,我的平台(Qt5)无法将 OpenGL 版本和配置文件指定为变量,因此我求助于宏来确保正确的类被重载,正确的参数被传递等所有必要的样板代码设置Qt5 中的 OpenGL。
但是最后一点头痛仍然存在:
#include <QOpenGLFunctions_4_0_Core>
在这种情况下,我想用宏替换 4、0 和 Core。
那么我该怎么做呢?
【问题讨论】:
-
你不能。 :( ...
-
实际上在发布后几分钟我就做到了!但仅适用于 "" 而不是
-
虽然你不能这样做,但你可以将有问题的包含隔离在你自己的头文件中(比如
ogl-in-use.h),然后在你的代码中使用它。如果您需要将版本替换为另一个版本,可以在一个地方进行调整
标签: c++ macros include c-preprocessor