Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > директивы препроцессора


Автор: Graf_h 18.3.2008, 11:24
Здравствуйте! Всем известно что компиляция програмы делится на три этапа! на первом этапе просматривается некая метаинформация, в частности и директивы... Что ж это такое? 
Есть всем известные:
#include
#ifndef
#ifdef
#endif
#define
static
extern
inline
...
Вот как то в книжке прчитал что директиву #pragma не советуют использовать! Но мне ею очень удобно подключать lib!
не могу понять для чего APPIENTRY, WINAPI

Вообщем, что знаете то и пишите! 

Спасибо за внимание smile 

Автор: Alek86 18.3.2008, 11:28
прагму нельзя использовать в кроссплатформенном программировании - а так я завсегда пользую #pragma once, к примеру

Автор: ama_kid 18.3.2008, 11:36
Цитата(Graf_h @  18.3.2008,  11:24 Найти цитируемый пост)
не могу понять для чего APPIENTRY, WINAPI

Код
#define WINAPI      __stdcall
#define APIENTRY    WINAPI

Автор: Graf_h 18.3.2008, 11:43
Цитата(ama_kid @  18.3.2008,  11:36 Найти цитируемый пост)
код C++1:2:#define WINAPI      __stdcall#define APIENTRY    WINAPI

так все же для чего?

Автор: ama_kid 18.3.2008, 11:57
Цитата(Graf_h @  18.3.2008,  11:43 Найти цитируемый пост)
так все же для чего? 
А хелп для чего?  smile 
stdcall - это указание модели вызова функции, т.е. типа соглашения между твоей функцией и тем, кто её вызывает (для функции WinMain - вызывающей стороной является ОС) о правилах формирования и обработки стека параметров...

Автор: Graf_h 18.3.2008, 12:09
Цитата(ama_kid @  18.3.2008,  11:57 Найти цитируемый пост)
stdcall - это указание модели вызова функции, т.е. типа соглашения между твоей функцией и тем, кто её вызывает (для функции WinMain - вызывающей стороной является ОС) о правилах формирования и обработки стека параметров...


Я где то читал, что когда мы вызываем функцию с директивой APIENTRY то параметры функции обрабативаются в другом порядке! Зачем оно мне нужно? Какая разница, обрабатываются параметры с лева на право или справа на лево? Если я ошибаюсь так исправте меня!

Автор: mes 18.3.2008, 12:35
Цитата(Graf_h @  18.3.2008,  12:09 Найти цитируемый пост)
 Какая разница, обрабатываются параметры с лева на право или справа на лево? Если я ошибаюсь так исправте меня!



В пределах одной проги по умолчанию все одного стандарта и заботиться о " направлении" обработки стека не нужно. 
Но если используются внешние вызовы (прога является библиотекой, либо использует функции библиотеки, либо предоставляет системе функции обратного вызова) то обязательно нужна согласованность. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)