Где следует разместить _declspec? - PullRequest
0 голосов
/ 11 июня 2018

Я в процессе перехода от файла def к использованию _declspec для библиотеки, которую я поддерживаю.Я прочитал несколько вопросов здесь по SO и документации MSDN.Я понимаю, как работает эта функция.Я создал макросы и использую _declspec или gcc __attribute__ в зависимости от среды сборки.Макросы также правильно выбирают между _declspec(dllexport) и _declspec(dllimport).

Есть ли какой-либо вред в использовании _declspec в определениях функций?Следует ли использовать _declspec только для прототипов функций?

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

1 Ответ

0 голосов
/ 11 июня 2018

НЕТ вреда при определении функций - sing __declspec (dllimport) является необязательным при объявлении функций, но компилятор создает более эффективный код, если вы используете это ключевое слово.Однако вы должны использовать __declspec (dllimport) для импортируемого исполняемого файла, чтобы получить доступ к символам и объектам общедоступных данных DLL.Он в основном используется для импорта символов из / экспорта символов в общую библиотеку (DLL).Компиляторы Visual C ++ и GCC поддерживают __declspec (dllimport) и __declspec (dllexport).

Вы также можете использовать его для переменных.

...