如何在C include语句中使用#define?

时间:2019-05-09 15:55:33

标签: c include preprocessor

我有一个在两个平台之间选择的头文件:

#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中使用。

2 个答案:

答案 0 :(得分:5)

您可以使用以下宏结构来实现它:

#define stringify(x) #x
#define GEN_INC_PATH(a) stringify(a.h)

#include GEN_INC_PATH(PAR_CLASS)

答案 1 :(得分:0)

为什么逻辑中没有#include语句?像

#ifdef _WINDOWS
#include "TestPar.h"
#else
#include "Par.h" 
#endif

并将#define移到各自的包含文件中