Заблокирован
|
|||||||||||
1 | |||||||||||
#pragma once25.11.2011, 17:46. Показов 3432. Ответов 17
Метки нет (Все метки)
Можно ли считать директиву
0
|
25.11.2011, 17:46 | |
Ответы с готовыми решениями:
17
#pragma once #pragma once Pragma Использование #pragma once |
Заблокирован
|
|
25.11.2011, 17:52 [ТС] | 3 |
А что значит нестандартная, если речь идет только об одном компиляторе?
А именно о VS2010. А что можете сказать относительно поведения в том и в другом случае. Грубо говоря, вопрос ставится так. Вот я новичок и пока хочу сосредоточиться на изучении основных свойств языка, а не копилятора. Могу я, чтобы этого избежать просто ставить эту директиву во всех заголовках, ну пока на первых порах.
0
|
Заблокирован
|
|
25.11.2011, 18:01 | 4 |
То и означает, что нестандартный, то есть ваш код становится непереносимым и не будет компилироваться другими компиляторами при обнаружении дублирования объявлений.
Как раз если вы хотите изучить сам язык, а язык - это то, что написано о нем в стандарте, то надо пользоваться стандартными средствами языка. Что касается компиляторов MS VC. то они имеют много багов. Поэтому надо ориентироваться не на конкретный компилятор, а на знание самого языка С++, чтобы уверенно говорить, что некоторая заданная конструкция корректная, а именно компилятор содержит баг.
0
|
Заблокирован
|
||||||
25.11.2011, 18:10 [ТС] | 6 | |||||
Да поймите Вы, мне бы пока с основами освоиться, а не вникать в переносимость и в другие высокие материи.
Поэтому пока я естественно ориентируюсь на один единственный компилятор и на то, что данная директива будет вести себя точно таким же образзом, как и стандартная стажнаяя схема. И вот, разумеется я и расчитываю узнать, вправе ли я ожидать аналогичного поведения этих двух схем. Между прочим, не знаю как другие, но VS2010 упорно подчеркивает красной линией вот такие заключенные между ними объявления, когда я пользуюсь стандартной схемой (хотя все компилируется нормально):
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
25.11.2011, 18:17 | 7 |
на самом деле #pragma once есть во всех топовых компиляторах
и конечно плохо, что ее нет в стандарте Добавлено через 59 секунд завуалированное int const MaxStackSize = 50; смело!
1
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
25.11.2011, 18:51 | 9 |
thick_int, приведите полный пример
и программа не компилируется, или просто vs чтото там подсвечивает? если последнее - то нестрашно, тамошний парсер недалекого ума
0
|
Заблокирован
|
||||||
25.11.2011, 19:28 [ТС] | 10 | |||||
Пример простой учебный:
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
25.11.2011, 19:54 | 11 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
25.11.2011, 20:32 | 13 |
thick_int, Обычно для такого делают анонимный namespace,
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
25.11.2011, 20:58 | 15 |
Сыроежка, Да. Но все же формально она становится не глобальной константой (формально с точки зрения человека, а не компилятора).
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
25.11.2011, 21:05 | 16 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
25.11.2011, 21:07 | 17 |
alex_x_x, Возможно насчет обычно я погорячился. Как по мне - это выглядит эстетичнее.
0
|
Заблокирован
|
|
25.11.2011, 21:08 | 18 |
Я совершенно не понял вашего ответа. То, с одной стороны, вы хотите ее поместить в анонимное пространство имен, чтобы только одна единица трансляции с ней работала, то вы говорите про какую то глобальность. Мне представляется, что вы сами себе противоречите.
0
|
25.11.2011, 21:08 | |
25.11.2011, 21:08 | |
Помогаю со студенческими работами здесь
18
#pragma once не нужна? Пример #pragma once Препроцессор #pragma Директива #pragma Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |