_Declspec
Применение этого ключевого слова не ограничено визуальным программированием, однако также участвует в поддержке кода VCL.
Общее применение _declspec
Выражение вида _declspec (аргумент) является модификатором, который может применяться к функциям или переменным. Аргументы dllexport, dilimport и thread формируют модификаторы, соответствующие обычным export, _import и _thread. Разница между ними заключается в том, что обычные модификаторы должны всегда непосредственно предшествовать имени объявляемой переменной или функции, в то время как модификаторы _declspec можно помещать в любом месте объявления:
void _declspec(dllexport) f(void);// Верно.
_declspec(dllexport) void f(void);// Верно.
_export void f(void) // Ошибка: должно быть
// void export.
Другими аргументами _declspec общего применения являются:
naked: Применяется к определению функции. Подавляет генерацию кода пролога/эпилога вызова, позволяя программисту написать свой собственный код, используя встроенный ассемблер.
- noreturn: Сообщает компилятору, что функция не возвращает управления вызывающей программе. Обычно, когда компилятор обнаруживает, что при некоторых условиях функция, объявленная с типом возвращаемого значения, ничего не возвращает, он выдает предупреждение. Однако если эта ситуация связана с вызовом другой функции, не возвращающей управления, то, объявив последнюю с модификатором _declspec (noreturn), можно подавить такое предупреждение. Вот пример:
_declspec(noreturn) void finish(){
...
throw "No return";
}
int RetInt(){
if(....)
return 1;
else
finish(); // Без noreturn генерировалось бы
// предупреждение.
nothrew: Соответствует спецификации исключения без аргументов. Следующие объявления эквивалентны:
__declspec(nothrow) void f();
void f() throw();
novtable: Применяется к классам, для которых никогда не будет создаваться представителей. В большинстве случаев этот модификатор подавляет генерирование vtaDie и, соответственно, кода всех функции,на которые она ссылается.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий