«Очистить» Макросы экспортируются в файл .lib? - PullRequest
1 голос
/ 12 августа 2011

У меня есть несколько макросов, как,#define dosomething(x) something(x) и он скомпилирован в dll.Будет ли у меня этот макрос в той библиотеке, созданной сборкой?

Ответы [ 3 ]

7 голосов
/ 12 августа 2011

Нет.

Макросы даже не видны компилятору .Они заменяются текстом подстановки во время предварительной обработки , что происходит в самом начале.Макросы тупые, они ничего не знают о вас или ваших мотивах.Они даже не знают, на каком языке ты пишешь.Осторожно!

4 голосов
/ 12 августа 2011

номер

Макросы - это просто (не очень) разработанное устройство вставки копий на уровне исходный код . Они раскрываются до компиляции, и компилятор не знает об их существовании.

Если вы хотите, чтобы символ dosomething был экспортирован в вашу библиотеку, вы должны объявить его как функцию.

3 голосов
/ 12 августа 2011

Макросы используются и обрабатываются только препроцессором. Они не используются компилятором и совсем не известны компоновщику. Итак, ответ НЕТ. Макросы не экспортируются.

Что тебе нужно? Не могли бы вы просто #include указать заголовочный файл?

...