Если у меня есть SOME_MACRO
, который определяется как __declspec(dllimport)
или __declspec(dllexport)
, есть ли способ проверить во время компиляции, какой из них используется?
т.е. что-то вроде этого:
#if SOME_MACRO == __declspec(dllimport)
// do something
#else
// do something else
#endif
УПД. Глядя на ответы, которые я получаю, я думаю, мне следует более конкретно указать, зачем мне это нужно.
Я пытаюсь скомпилировать довольно большую стороннюю библиотеку, в которой функция объявлена как dllexport
в большинстве частей их кода, где она включена. Однако есть один компонент, в котором это dllimport
.
Мне нужно немного изменить объявление для случая dllimport
. Переключение между двумя объявлениями не очень простое, это результат довольно глубокого дерева #ifdef
инструкций, разбросанных по нескольким файлам. В принципе, я мог бы выкопать эту информацию из этих инструкций, но чтобы убедиться, что я сделал это правильно, мне пришлось бы попытаться скомпилировать всю библиотеку в нескольких разных конфигурациях (каждая компиляция занимает пару часов).
С другой стороны, если бы был простой способ проверить, оценивается ли их SOME_MACRO
для импорта или экспорта, я мог бы быстро протестировать это на небольшой программе и безопасно поместить ее в библиотеку.
BUILD_DLL
в моем случае реализована кем-то другим. И это слишком сложно, поэтому я надеялся, что смогу преобразоватьSOME_MACRO
в строку, а затем проверить или что-то в этом роде... 20.01.2018BUILD_DLL
. Вы можете использовать этот макрос, чтобы включить свой условный код. 20.01.2018