![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Хорошо бы ещё привести в коде оба этапа: 1. когда были включены и a и b. 2. когда снова был включен a(уже из b). После описания решения взять код в котором будет уже всё "включено" и построчно закомментировать мол "здесь A_H неопределён и поэтому этот кусок не будет выкинут". Потом показать окончательный код, когда уже всё выкинуто.
Какие именно (кроме MSVC). Хорошо было бы перечислить их. Не обязательно все(если их очень много, в чём я немного сомневаюсь). В общем и целом всё гут. Молодец ![]() Это сообщение отредактировал(а) archimed7592 - 10.1.2008, 20:37 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
JackYF |
|
||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
мм... не понял, поясни? прокомментировать инклюды в main.cpp? а... имеется в виду - продемонстрировать работу #include'ов за компилятор?
MSVC, Builder, g++. Ещё? Эти я укажу. |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Угумс. Многим это непонятно. В частности, многие считают, что между именем заголовочного файла и именем модуля трансляции есть какая-то магическая связь. Укажи обязательно. Насчёт "ещё?" - не знаю, ибо конструкцией этой не пользуюсь ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
||||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
Сделал.
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
компилятор из MS Visual Studio(MSVC), компилятор Borland C++ Builder, компилятор g++ из GCC. Добавлено через 2 минуты и 32 секунды Ну а в остальном, как я уже сказал, всё гут. Пускай повисит до "после НГ" - если критики никакой не будет, то добавим в FAQ. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
можно ещё в func_b() добавить параметр point *x, например
чтобы яснее было, зачем в h-файле может понадобиться включение другого Добавлено @ 22:28 кстати, касательно #pragma once надёжен ли он? ведь далеко не всегда компилятор может автоматически определить, нужно ли два файла считать одинаковыми (я думаю, несложно придумать два примера, отличающиеся только семантикой и требующие разного поведения) это я к тому, что, может, стоит предостеречь о возможных трудностях, чтобы уменьшить тягу к дурным привычкам ![]() Это сообщение отредактировал(а) maxim1000 - 29.12.2007, 22:29 -------------------- qqq |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
да, можно. Если никто не против, добавляю. Он нестандартен, поэтому не очень рекомендуется к использованию. Другое дело, что насчёт ненадёжности я весьма сомневаюсь - что мешает препроцессору это самое #pragma once тупо преобразовывать в #ifndef...#define...#endif? |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
здесь возникает вопрос идентификатора, используемого в #ifndef и #endif например, может получиться так, что в двух разных местах окажутся два файла с одинаковыми именами (ситуация не очень правильная, но возможная) и оба они должны будут использоваться в программе тогда для них нужно будет использовать разные идентификаторы (ну, можно немного модифицированные) с другой стороны может оказаться, что на самом деле, это - один и тот же файл, и включать его нужно только один раз впрочем, файлы с одинаковым содержанием - простой случай, т.к. это легко отследить, и решение использовать одинаковые идентификаторы вполне естественно однако, их содержание может быть рзаным из-за того, что это - разные версии одного и того же файла т.е. здесь возможны ситуации, когда без дополнительных знаний не разобраться -------------------- qqq |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 2 Всего: 164 |
Все MSVC поддерживают pragma once начиная c _MCS_VER 1000. ИМХО, pragma once это нормально и нечего всякое старье поддерживать
![]() А статья прикольная, +1! --------------------
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Что стандарт говорит про #pragma once? Если он ничего говорит, то и использовать не стоит в серьезных проектах, имхо. |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 2 Всего: 164 |
А что стандарт говорит по поводу Win32API с ихними FAR поинтерами?
![]() --------------------
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 2 Всего: 207 |
#pragma once гарантирует семантику #ifndef #define #endif как он это делает - детали реализации -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
WIN32API - это всего лишь библиотека со своими макроопределениями и пр. А не расширения языка. А вот #pragma once - это расширение. Есть гарантия, что оно работает на всех компиляторах поддерживающих текущий стандарт? Нет. Значит рекомендовать к использованию не стоит. |
|||
|
||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 3 Всего: 134 |
Статья полезно, одно но.
Длинная очень. Не знаю как ужать, но читать это сложно. Можно сэкономить пару строк выкинув func_a и изменив func_b(void) на func( struct point *pt ); имхо "явно"/"неявно" здесь лишни.
а хто это? помню что в досе ближние от дальных отличались. А вот после препроцессирования
в bcc551 получаем что нет никаких FAR поинтеров
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |