Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Сообщение компилятора VC++ 6.0


Автор: AndreySol 23.1.2007, 08:09
Код

STREAMS.H included TWICE

Что сие значит ? И как с этим бороться ?
Я так примерно понял что компилятор обнаружил двойное включение этого хедера, и что он сделал:  одно из них проигнорировал или обработал оба, а меня просто проинформировал ?

Автор: Nuzur 23.1.2007, 11:28
AndreySol, ну насколько я понимаю STREAMS.H  это ваш класс. Отсуда вопрос, а предусмотрели вы 

Код

#if !defined(MY_CLASS_INCLUDED_)
#define MY_CLASS_INCLUDED_

#endif // !defined(MY_CLASS_INCLUDED_)


судя по сообщению компилятора нет.
Удачи!

Автор: AndreySol 23.1.2007, 19:14
Понял, спасибо.

Автор: nonstop 24.1.2007, 08:56
#pragma once
все же короче

Автор: Nuzur 24.1.2007, 18:32
nonstop, There is also an explicit directive to tell the preprocessor that it need not include a file more than once. This is called `#pragma once', and was used in addition to the `#ifndef' conditional around the contents of the header file. `#pragma once' is now obsolete and should not be used at all.
Надеюсь перевести сам сможеш. Удачи!

Автор: SergeCpp 24.1.2007, 21:31
Nuzur, Ваша цитата дословно есть, в частности, http://docs.freebsd.org/info/cpp/cpp.info.Once-Only.html

Замечу, что FREEBSD.ORG != Microsoft Visual C++ 6.0

Использую сам (именно в VC++ 6.0 SP6) и рекомендую использовать #pragma once

Весьма полезно будет прочитать вот эту вот статью и комментарии к ней

http://www.gamesfromwithin.com/articles/0501/000067.html
http://www.convexhull.com/mt/mt-comments.cgi?entry_id=67

Автор: Nuzur 25.1.2007, 12:47
SergeCpp, спасибо гляну, кроме того я брал ее с gcc и вроде редактировал и вставлял ссылку, но видно недоредактировал smile

Цитата

Замечу, что FREEBSD.ORG != Microsoft Visual C++ 6.0

100%, только вот беда, а кто сказал что человек на 6-й студии клипает то? И кто сказал что ему ненужно потм будет использовать где-нить еще? Типа Стримс не может быть библиотекой? И тем паче кросс-платформенной?
А окромя того ведь то что в ОС должно быть ядро, к примеру, написано не только у мелкомягких но и у Яблочных и Красноглазых, так что теперь, если я найду про сие ссылку у Яблочных значит мелкомягкие не могут использовать? Бред. ИМХО.
А особенно умиляет то что имя сайта не равно названию среды разработки, даже в стрингах не равно. ТРУ.

Цитата

Использую сам (именно в VC++ 6.0 SP6) и рекомендую использовать #pragma once

Потому что гладиолус? Я тоже юзаю, в данный момент VC++ 6.0 SP6, и рекомендую свой вариант. Священная война начинаетсо?

Открыл ссылки и понял что читать не буду smile Ибо www.gamesfromwithin.com как-то не авторитетно что-ли, ведь на заборе много тоже чего написано и кто сказал что сие есть святой тру? А вот ссылочку на мелкомягких дадите и сие будет уже чего-то весить smile

ЗЫ: Кстати сама студия( Которой вы и пользуетесь ) использует оба варианта одновременно, это  я к святой паранои разработчика. Если честно то всегда, когда классы с нуля делал, всегда использовал только #if !defined #define  теперь возможно буду использовать #pragma once, такая предосторожность лишней не будет smile

Автор: SergeCpp 25.1.2007, 12:57
Цитата(Nuzur @  25.1.2007,  14:47 Найти цитируемый пост)
а кто сказал что человек на 6-й студии клипает то

А Вы название темы посмотрите... smile

Цитата(Nuzur @  25.1.2007,  14:47 Найти цитируемый пост)
www.gamesfromwithin.com как-то не авторитетно что-ли

Так там же результаты тестов. Их можно и повторить.

P.S. То, что #if медленнее — логично. Ведь компилятору приходится искать парный (читать файл)

И ещё. Территориальная разнесённость #if и #endif. Нехорошо это. В данном случае — особенно

Самое же главное тут, что #if — это всё-таки workaround в отличие от (хотя и не стандартизованной) once

http://en.wikipedia.org/wiki/Pragma_once

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_predir_once.asp Про "obsolete" не упоминается

Автор: Nuzur 25.1.2007, 16:05
SergeCpp, кстати, по ссылке на вики есть моя цЫтата smile Ладно я больше не буду отвечать вам, ибо офтоп, просто каждому свое. Точка.

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