C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Директивы(Directives), Помогите разобраться....
AntonGib
Отправлено: 10.11.2005, 13:21


Ученик-кочегар

Группа: Участник
Сообщений: 25



Директивы:
# (null directive) #ifdef
#define #ifndef
#elif #import
#else #include
#endif #line
#error #pragma
#if #unde
Я понимаю обозначение почти каждой директивы.
А зачем они нужны я не пойму.

Guest
Отправлено: 10.11.2005, 13:31


Не зарегистрирован







Они нужны для динамического управления процессом компиляции.
(Да почитайте вы книжку в конце-то концов smile.gif )
AntonGib
Отправлено: 10.11.2005, 15:29


Ученик-кочегар

Группа: Участник
Сообщений: 25



Но если вам понятно динамическое управление процессом компиляции, то я за вас рад, а мне нет.

Граждани а для чего это нужно. Приведите пример. Очень прошу.
Guest
Отправлено: 10.11.2005, 16:14


Не зарегистрирован







Динамическое — это означает что процесс компиляции (именно компиляции, а не выполнения приложения) можно пустить по разным веткам в зависимости от выполнения или не выполнения неких условий.

Примеры:
#ifndef ___NFILE_H
#define ___NFILE_H
#define _NFILE_ 250
#endif


#ifdef __cplusplus
namespace std {
#endif

#if !defined(__STDC__)
struct heapinfo
{
void * ptr;
void * ptr2;
unsigned size;
int in_use;
};
#endif

#ifdef __cplusplus
extern "C" {
#endif

и т.д.
AntonGib
Отправлено: 10.11.2005, 17:16


Ученик-кочегар

Группа: Участник
Сообщений: 25



А зачем так мудрить?
gvg
Отправлено: 10.11.2005, 17:55


Машинист паровоза

Группа: Участник
Сообщений: 222



Гляжу, у Вас ни малейшего желания разобраться в чем-либо самостоятельно...

А мудрить нужно потому, например, что программы иногда пишут под различные компиляторы и даже платформы. Не переписывать же все под каждый вариант, если там различия незначительные.
Guest
Отправлено: 10.11.2005, 18:02


Не зарегистрирован







Что бы можно было создавать исполняемый код максимально близкий к потребностям конкретной обстановки с минимальной головной болью.
Guest
Отправлено: 11.11.2005, 10:19


Не зарегистрирован







Ну вот все встало на свое место. Спасибо.
Гражд., а что так трудно написать две строчки?
Asher
Отправлено: 11.11.2005, 10:58


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.
QUOTE
Гражд., а что так трудно написать две строчки?

А прочесть самому труднее?
AntonGib
Отправлено: 11.11.2005, 12:03


Ученик-кочегар

Группа: Участник
Сообщений: 25



Мое мнение такое, что в первую очередь нодо определиться где и про что. Это же не VB, и уж точно не VBA, где все наглядно и понятно. А так с вашей помощью я осветил для себя этот вопрос. Я же не спрашиваю, что каждая обозначает и как работает.
vvoid
Отправлено: 11.11.2005, 20:02


Машинист паровоза

Группа: Участник
Сообщений: 171



Ну уж не сказал бы, что в VBA прямо всё так просто и понятно. Точнее просто, но не всё понятно, как то я писал макрос для VisualC++, конечно это и заняло всего несколько часов, но я так и не смог проверить существует ли файл на диске. Если просто открывть — то всё виснет. Не подскажите, кстати как это сделать, уж больно хочется, чтоб Visual по Ctrl+F6 открывал соответствующий h-ник или с-шник.

PS Извиняюсь за оффтоп.
AntonGib
Отправлено: 14.11.2005, 14:25


Ученик-кочегар

Группа: Участник
Сообщений: 25



На VBA это будет выглядеть так:
Function isFile (fName as String) as Boolean
If (dir(fName<>" ")) Then
isFile=true
Else
isFile=false
End If
End Function

Ну вот, а дальше функцию используешь по назначению. Быстро, просто и без проблем.

Вернуться в Вопросы программирования в C++Builder