如何在 C include 语句中使用#define?
How to use a #define inside a C include statement?
我有一个在两个平台之间进行选择的头文件:
#pragma once
#ifdef _WINDOWS
#define PAR_CLASS TestPar
#define PAR_INCLUDE_FILE "TestPar.h"
#else
#define PAR_CLASS Par
#define PAR_INCLUDE_FILE "Par.h"
#endif
有了这个,我可以使用以下行来包含头文件:
#include "ClassNames.h"
#include PAR_INCLUDE_FILE
但是,我期望更多 类,对于 PAR_CLASS 和 PAR_INCLUDE_FILE,唯一不同的是 " 和 .h
我想要的是在 #include
中使用 PAR_CLASS,类似于:
#include "PAR_CLASS.h"
但这行不通...这样的事情可能吗?
我希望它在 Visual Studio (2019) 和 Arduino IDE 中工作。
为什么逻辑中没有 #include
语句?像
#ifdef _WINDOWS
#include "TestPar.h"
#else
#include "Par.h"
#endif
并将 #define
移动到各自的包含文件中
您可以使用以下宏结构来实现它:
#define stringify(x) #x
#define GEN_INC_PATH(a) stringify(a.h)
#include GEN_INC_PATH(PAR_CLASS)
我有一个在两个平台之间进行选择的头文件:
#pragma once
#ifdef _WINDOWS
#define PAR_CLASS TestPar
#define PAR_INCLUDE_FILE "TestPar.h"
#else
#define PAR_CLASS Par
#define PAR_INCLUDE_FILE "Par.h"
#endif
有了这个,我可以使用以下行来包含头文件:
#include "ClassNames.h"
#include PAR_INCLUDE_FILE
但是,我期望更多 类,对于 PAR_CLASS 和 PAR_INCLUDE_FILE,唯一不同的是 " 和 .h
我想要的是在 #include
中使用 PAR_CLASS,类似于:
#include "PAR_CLASS.h"
但这行不通...这样的事情可能吗?
我希望它在 Visual Studio (2019) 和 Arduino IDE 中工作。
为什么逻辑中没有 #include
语句?像
#ifdef _WINDOWS
#include "TestPar.h"
#else
#include "Par.h"
#endif
并将 #define
移动到各自的包含文件中
您可以使用以下宏结构来实现它:
#define stringify(x) #x
#define GEN_INC_PATH(a) stringify(a.h)
#include GEN_INC_PATH(PAR_CLASS)