撇開最佳做法,是否可以製作一個C++預處理器宏,該宏會生成一個有效的#include
語句,以後會導致文件被包含在內?如何使用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')並且使用你的所有代碼如果你需要用另一個版本替換版本,那麼有一個地方可以調整 –