Шаг 122 - __declspec

Спецификация Microsoft

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

allocate("segname")		// определяет сегмент данных для распределения
dllimport				// экспортируемое из DLL
dllexport				// импортируемое в DLL
naked				// генерация кода без оболочки функций
noreturn				// функция не имеет возврата
nothrow				// в функции не будет исключений
novtable				// у класса не будет виртуальной таблицы
property({get=get_func_name|, put=put_func_name})	// для виртуальных членов в классах т структурах.
selectany				// для оптимизации переменных
thread				// для локальных переменных потока
uuid("ComObjectGUID")		//Компилятор прилагает GUID к классу или структуре

Применение этого ключевого слова требует опыта. Если с импортом, экспортом более менее понятно, то зачем говорить, например что у функции не будет исключений nothrow? Тут надо знать, что если функция может вызвать исключение, то к ней дописывается определенный код. А вот применение этого ключевого слова этот код удаляет. Вроде как функция будет меньше. Или когда виртуальной таблицы нет novtable, то же будет меньше.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 05.07.2001