Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как часто приходится манипулировать директивами препроцессора для написания программ на Си++? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Безопасная работа с памятью в OpenMP С++ http://www.cyberforum.ru/cpp-beginners/thread1498291.html
Добрый день. Вопрос связан с тем как можно добавлять элементы к общему динамическому массиву в параллельных потоках. По сути задачи приходится к созданному многомерному vector добавлять новые...
C++ Генерация и проверка серийного номера, как реализовать? Мне нужно, скажем так, защитить программу - написать функцию генерации и проверки уникального серийного номера для каждой копии программы. Пока не совсем понимаю, в каком направлении копать. Я знаю,... http://www.cyberforum.ru/cpp-beginners/thread1498282.html
While в while C++
здравствуйте, я только начала изучать C++, с простыми циклами все понятно, а вот вложенные циклы туговато доходят. пожалуйста объясните данный код (желательно каждую строчку)) int i=0; int j=0;...
C++ Конструктор с параметром C++
Приветствую! Изучая одну литературу столкнулся с конструктором в котором мне не понятен синтаксис т.к. во время обучения самого С++ не сталкивался с ним. Объясните пожалуйста. struct func { ...
C++ Контейнер map с сохранением порядка вставки элементов http://www.cyberforum.ru/cpp-beginners/thread1498271.html
Можно ли в контейнере расположить ключи так, чтобы они не были отсортированы в порядке убывания или возрастания. Например я ложу в контейнер такие ключи: map<string,string> st;...
C++ Можно ли узнать, каким компилятором была собрана ты или иная DLL-ка ? сабж.. подробнее

Показать сообщение отдельно
DrOffset
7509 / 4505 / 1023
Регистрация: 30.01.2014
Сообщений: 7,362
13.07.2015, 21:28
Цитата Сообщение от Evg Посмотреть сообщение
#pragma НЕ является директивой препроцессора.
Ну тут не так все однозначно.
В общем случае можно сказать, что не является.
Но есть #pragma, которые таки являются. Например, в GCC они описаны отдельно.
Оттуда:
This manual documents the pragmas which are meaningful to the preprocessor itself. Other pragmas are meaningful to the C or C++ compilers.
А в стандарте C99, она безоговорочно обозвана директивой препроцессора наравне с остальными.
Из предметного указателя:
#define preprocessing directive, 6.10.3
#elif preprocessing directive, 6.10.1
#else preprocessing directive, 6.10.1
#endif preprocessing directive, 6.10.1
#error preprocessing directive, 4, 6.10.5
#if preprocessing directive, 5.2.4.2.1, 5.2.4.2.2, 6.10.1, 7.1.4
#ifdef preprocessing directive, 6.10.1
#ifndef preprocessing directive, 6.10.1
#include preprocessing directive, 5.1.1.2, 6.10.2
#line preprocessing directive, 6.10.4
#pragma preprocessing directive, 6.10.6
#undef preprocessing directive, 6.10.3.5, 7.1.3, 7.1.4
Чтобы не было соблазна упрекнуть меня в неверном понимании словосочетания "preprocessing directive", сразу приведу цитату:
A preprocessing directive consists of a sequence of preprocessing tokens that begins with
a # preprocessing token that (at the start of translation phase 4) ...
Phase 4
Preprocessing directives are executed, macro invocations are expanded, and
_Pragma unary operator expressions are executed. If a character sequence that
matches the syntax of a universal character name is produced by token
concatenation (6.10.3.3), the behavior is undefined. A #include preprocessing
directive causes the named header or source file to be processed from phase 1
through phase 4, recursively. All preprocessing directives are then deleted.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru