Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194

конструкция #if not defined "xxx" #define xxx нужна ли?

06.03.2013, 12:03. Показов 3981. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил вот научится писать не просто код, а правильный код.
часто в заголовочных файлах вижу конструкцию
C++
1
2
3
4
#if !defined(_xxx)
#define _xxx
//some code
#endif
Нужно ли это?

Добавлено через 1 минуту
п.с. подразумевается что и я и кто будет использовать эти файлы должны всё делать правильно
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.03.2013, 12:03
Ответы с готовыми решениями:

Обработка телефонного номера в форме (XXX)XXX-XX-XX
Напишите программу, которая вводит телефонный номер в форме (XXX)XXX-XX-XX. Программа должна извлекать в виде лексем код места...

Error: passing xxx as 'this' argument of xxx discards qualifiers
Привет. Не собирается следующий код: error: forming pointer to reference type ‘QList<const QByteArray&>::value_type {aka const...

Firefox can't establich a connection to the server at xxx.xxx.xxx.xxx:2047
простейшее Silverlight приложение. Запущено под ASP .NET Development Server. на той же машине вижу страничку, на другой (линукс машина в...

10
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
06.03.2013, 12:08
Цитата Сообщение от nefton Посмотреть сообщение
Нужно ли это?
Непременно! Это делается для гарантии того, что код из хедера не будет вставлен дважды и на этой почве не произойдет зацикливания препроцессора.
Вместо _xxx обычно используется ИМЯ_H, где ИМЯ - имя соответствующего хедера
1
Эксперт С++
 Аватар для ITcrusader
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
06.03.2013, 12:13
Ага. Наиболее классический вариант использования такой:
C++
1
2
3
4
5
#pragma once // студийная мулька. Тоже не повредит здесь
#ifndef FILE_H
#define FILE_H
 // code
#endif  /* FILE_H */
2
06.03.2013, 13:06
Лучший ответ Сообщение было отмечено как решение

Решение

Не по теме:

Цитата Сообщение от ITcrusader Посмотреть сообщение
// студийная мулька. Тоже не повредит здесь
зарплата зависит от количества строк?

5
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.03.2013, 13:25
Цитата Сообщение от ITcrusader Посмотреть сообщение
студийная мулька
Не только студийная. Ее поддерживают все адекватные компиляторы, поэтому ее можно спокойно использовать.
Недостаток инклуд гардов заключается в том, что если переименовать файл или перенести его в другое место, то дефайны тоже придется менять.
Так что, на мой взгляд, лучше использовать
C++
1
#pragma once
0
Эксперт С++
 Аватар для ITcrusader
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
06.03.2013, 14:24
Jupiter, у этих ребят, полагаю, нет.

// complex standard header
#pragma once
#ifndef _COMPLEX_
#define _COMPLEX_
...

Однажды я пытался найти ответ на вопрос "а что использовать?" В итоге, пришел к выводу, что такой способ носит более универсальный характер. Нигде ответов однозначных, декларирующих нецелесообразность использования чего-либо - я не обнаружил.
0
06.03.2013, 14:38

Не по теме:

Цитата Сообщение от ITcrusader Посмотреть сообщение
Однажды я пытался найти ответ на вопрос "а что использовать?" В итоге, пришел к выводу, что такой способ носит более универсальный характер. Нигде ответов однозначных, декларирующих нецелесообразность использования чего-либо - я не обнаружил.
лол что?
использовать эти две конструкции вместе все равно что
C++
1
++i; //увеличиваем переменную i на еденицу
писать такие комментарии, или вы по видеоурокам обучались и повторяете все как на каком-то видео?

1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
06.03.2013, 14:38
Цитата Сообщение от ITcrusader Посмотреть сообщение
студийная мулька.
Не только. В борланде тоже есть.

nefton, вот настоятельно советую подробно почитать. Очень хорошо подытожено.

Не по теме:

Ну кроме именованных констант. :D

0
Эксперт С++
 Аватар для ITcrusader
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
06.03.2013, 15:29
Цитата Сообщение от Jupiter Посмотреть сообщение
зарплата зависит от количества строк?
Цитата Сообщение от Jupiter Посмотреть сообщение
или вы по видеоурокам обучались и повторяете все как на каком-то видео?
Я как-то в одной из последних тем выражал свое отношение к видео урокам: "Они годны лишь для тех, кто учится завязывать галстук". Что касается того, что вы (с высоты вашей репутации) строите предположение о том, как я обучался, на основе того, как я пользуюсь include guards'ами, то тут, мне думается, что едва ли такой способ их использования - показатель некомпетентности.

Ну, зато ваши насмешки уже получили пару положительных отзывов. Я, признаться, даже и не знаю более, что написать.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.03.2013, 15:54
ITcrusader, Он прав потому что. Не нужно писать лишних строк, которые не играют ровным счетом никакой роли.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.03.2013, 13:30
Цитата Сообщение от ITcrusader Посмотреть сообщение
В итоге, пришел к выводу, что такой способ носит более универсальный характер
В то, что #pragma once может не быть в каком-либо компиляторе, я могу поверить, ибо этого нет в стандарте. Но вот то, чтобы где-то не работали include guard'ы - такого быть не может, ибо это не специализированный механизм, а своего рода хак препроцессора, т.е. использование возможностей (описанного в стандарте) препроцессора таким вот особым образом. На фоне этого #pragma once рядом с include guard'ом выглядит как пятая нога у собаки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2013, 13:30
Помогаю со студенческими работами здесь

Как в Java ввести строку формата xxx.xxx.xxx.xxx
Здравствуйте. Подскажите пожалуйста как в Java ввести строчку формата xxx.xxx.xxx.xxx и чтобы можно было работать с каждым из 4 этих чисел?

IPFW. Не срабатывает правило с not адресом (not xxx.xxx.xxx.xxx)
Не работает - запретить всем локальным машинам сети, кроме ...0.52 ходить в Инет (to any, any to, всяко болт) add deny ip from not...

Вывести все номера телефонов, содержащиеся в сообщении соответсвующие форматам xx-xx-xx, xxx-xxx и xxx-xx-xx
Вывести все номера телефонов, содержащиеся в сообщении соответсвующие форматам xx-xx-xx, xxx-xxx и xxx-xx-xx Даже и не знаю как вывести...

mailto:xxx@xxx.xxx?subject=The file <Y> cannot be found.
в скрипте стоит следующее document.write('&lt;a href='mailto:xxx@xxx.xxx?subject=The file &lt;Y&gt; cannot be found.'&gt;'+link+'&lt;/a&gt;'); ...

Кaк в 'select from xxx where xxx =' вписaть стрингoвую переменную пoсле рaвнo?
Кaк в 'select from xxx where xxx =' вписaть стрингoвую переменную пoсле рaвнo? Кaкoй синтaксис,a тo oн мне все время ругaется o Syntax...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru