Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
#1

Форумчане разъясните #pragma once) - C++

29.08.2013, 03:44. Просмотров 1079. Ответов 15
Метки нет (Все метки)

C++
1
#pragma once
и
C++
1
2
3
4
5
#ifndef Variables_h_
#define Variables_h_
....
 
#endif
это что одно и тоже? первый вариант свежий а второй старьё что ли?)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12501 / 7063 / 793
Регистрация: 27.09.2012
Сообщений: 17,447
Записей в блоге: 2
Завершенные тесты: 1
29.08.2013, 04:00     Форумчане разъясните #pragma once) #2
Цитата Сообщение от Ko Посмотреть сообщение
первый вариант свежий
первый вариант не стандартный и может не поддерживаться компилятором
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
29.08.2013, 04:09  [ТС]     Форумчане разъясните #pragma once) #3
Цитата Сообщение от Croessmah Посмотреть сообщение
первый вариант не стандартный и может не поддерживаться компилятором
я использую только intel компилятор) а так то это одно и тоже???
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12501 / 7063 / 793
Регистрация: 27.09.2012
Сообщений: 17,447
Записей в блоге: 2
Завершенные тесты: 1
29.08.2013, 04:18     Форумчане разъясните #pragma once) #4
Цитата Сообщение от Ko Посмотреть сообщение
а так то это одно и тоже?
Даже не знаю как ответить. Вы в курсе что такое #pragma вообще?
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
29.08.2013, 04:34  [ТС]     Форумчане разъясните #pragma once) #5
Цитата Сообщение от Croessmah Посмотреть сообщение
Даже не знаю как ответить. Вы в курсе что такое #pragma вообще?
догадываюсь)

Добавлено через 1 минуту
давайте конкретизируем вопрос, в обоих случаях будет один и тот же эффект?)
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12501 / 7063 / 793
Регистрация: 27.09.2012
Сообщений: 17,447
Записей в блоге: 2
Завершенные тесты: 1
29.08.2013, 04:39     Форумчане разъясните #pragma once) #6
Цитата Сообщение от Ko Посмотреть сообщение
в обоих случаях будет один и тот же эффект?)
Конечный эффект аналогичный
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
29.08.2013, 05:11  [ТС]     Форумчане разъясните #pragma once) #7
Цитата Сообщение от Croessmah Посмотреть сообщение
Конечный эффект аналогичный
а какой вариант первый появился на свет ?
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
29.08.2013, 06:32     Форумчане разъясните #pragma once) #8
Ko, здесь вроде все подробно разъяснено:
#pragma once
#ifdef... #ifndef, #endif
#define - с пункта 3.3
и снова #define, только немного по другому
ВСарости
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 10
29.08.2013, 14:06     Форумчане разъясните #pragma once) #9
Цитата Сообщение от Ko Посмотреть сообщение
это что одно и тоже? первый вариант свежий а второй старьё что ли?)
Как раз недавно с этим столкнулся. MS Visual Studio 12 напрочь игнорит конструкцию

C++
1
2
3
4
5
#ifndef Variables_h_
#define Variables_h_
....
 
#endif
но корректно отрабатывает

C++
1
#pragma once
Jupiter
Каратель
Эксперт C++
6547 / 3967 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.08.2013, 14:19     Форумчане разъясните #pragma once) #10
Цитата Сообщение от ВСарости Посмотреть сообщение
Как раз недавно с этим столкнулся. MS Visual Studio 12 напрочь игнорит конструкцию
чем докажешь? УМВР
ВСарости
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 10
29.08.2013, 15:15     Форумчане разъясните #pragma once) #11
Цитата Сообщение от Jupiter Посмотреть сообщение
чем докажешь? УМВР
Хм... У меня - нет. Доказывать лень. Сойдёт аргументация?
Jupiter
Каратель
Эксперт C++
6547 / 3967 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.08.2013, 16:05     Форумчане разъясните #pragma once) #12
Цитата Сообщение от ВСарости Посмотреть сообщение
Сойдёт аргументация?
ну попробуй
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.08.2013, 16:16     Форумчане разъясните #pragma once) #13
Цитата Сообщение от ВСарости Посмотреть сообщение
MS Visual Studio 12 напрочь игнорит конструкцию
Такая конструкция везде работает. Только нужно пнимать, что это действует в пределах одного файла. Некоторые думают, что это может защитить от множественных определений в нескольких файлах.
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
29.08.2013, 16:37  [ТС]     Форумчане разъясните #pragma once) #14
Цитата Сообщение от alsav22 Посмотреть сообщение
Такая конструкция везде работает. Только нужно пнимать, что это действует в пределах одного файла. Некоторые думают, что это может защитить от множественных определений в нескольких файлах.
спасибо, вот это я и хотел услышать
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12501 / 7063 / 793
Регистрация: 27.09.2012
Сообщений: 17,447
Записей в блоге: 2
Завершенные тесты: 1
29.08.2013, 16:54     Форумчане разъясните #pragma once) #15
Цитата Сообщение от alsav22 Посмотреть сообщение
Некоторые думают, что это может защитить от множественных определений в нескольких файлах.
Тогда пускай идут читают книжки

C++
1
2
int arr [ size ] ;
arr [ size ] = 0 ;
В этом коде получается массив виноват
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 18:32     Форумчане разъясните #pragma once)
Еще ссылки по теме:

C++ Почему не работает #pragma omp task?
#pragma once C++
Можно ли директивой #pragma получить ассемблерный листинг? C++
C++ Что такое stract pragma и union
C++ Препроцессор #pragma

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

Или воспользуйтесь поиском по форуму:
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
29.08.2013, 18:32  [ТС]     Форумчане разъясните #pragma once) #16
Цитата Сообщение от Croessmah Посмотреть сообщение
Тогда пускай идут читают книжки

C++
1
2
int arr [ size ] ;
arr [ size ] = 0 ;
В этом коде получается массив виноват
))))))))

Добавлено через 3 минуты
напоминает случай с сушкой кошки после мытья в микроволновке)))

Добавлено через 1 час 25 минут
C++
1
2
3
4
5
6
7
8
9
10
#pragma once
#ifndef GRANDFATHER_H
#define GRANDFATHER_H
 
struct foo
{
    int member;
};
 
#endif /* GRANDFATHER_H */
я вот так и пишу, только думал может чё там лишнего рисую)))
Yandex
Объявления
29.08.2013, 18:32     Форумчане разъясните #pragma once)
Ответ Создать тему
Опции темы

Текущее время: 00:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru