Ищем команду препроцессора для удаления команды в коде

Я работаю над библиотекой C, которая иногда использует

 static inline void myfunc(...)

при определении функции.

Теперь я пытаюсь перенести это на старый компилятор C, который не поддерживает "статический inline". Это bcc - компилятор Си Брюса.

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

static inline void

с

void

во всех программах, которые включают этот заголовочный файл?

2 ответа

Когда вы должны использовать компилятор, который не поддерживает определенные функции, в вашем коде обычно используют макросы, а не пытаются модифицировать ваш код с помощью макросов.

В этой ситуации вы можете определить STATIC_INLINE макрос в зависимости от компилятора, и используйте его так:

#ifdef BCC_COMPILER
#define STATIC_INLINE
#else
#define STATIC_INLINE static inline
#endif
...
STATIC_INLINE void myfunc(...)

Большое спасибо всем за помощь. Я должен сообщить, что BLUEPIXY дал ответ, который работал для меня в своем комментарии:

 #define inline

По-видимому, bcc принимает static void но нет static inline void,

Другие вопросы по тегам