Как использовать #define внутри оператора C include? - PullRequest
3 голосов
/ 09 мая 2019

У меня есть заголовочный файл, который выбирает между двумя платформами:

#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 Я хотел бы использовать PAR_CLASS внутри #include, что-то вроде:

#include "PAR_CLASS.h"

Но это не работает ... Возможно ли что-то подобное?

Я хочу, чтобы он работал как в Visual Studio (2019), так и в Arduino IDE.

Ответы [ 2 ]

5 голосов
/ 09 мая 2019

Вы можете реализовать это, используя следующую структуру макроса:

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

#include GEN_INC_PATH(PAR_CLASS)
0 голосов
/ 09 мая 2019

Почему бы не иметь операторов #include внутри логики?Что-то вроде

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

и переместите #define в соответствующие им включаемые файлы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...