Вопросы с тегом 'c-preprocessor'

Шаг предварительной обработки макросов языков программирования C и С++. Этот тег также можно использовать для вопросов о других компиляторах/языках, полученных из или имеющих идентичные функции, такие как #directives в Objective-C или С#.
31
ответ

В чем разница между #include <filename> и #include "filename"?

В языках программирования C и С++ в чем разница между использованием угловых скобок и использованием кавычек в инструкции include следующим образом? #include <filename> #include "filename"
задан 22 авг. '08 в 4:40
5
ответов

Почему препроцессор C интерпретирует слово "linux" как константу "1"?

Почему препроцессор C в GCC интерпретирует слово linux (маленькие буквы) как константу 1? test.c: #include <stdio.h> int main(void) { int linux = 5; return 0; } Результат $ gcc -E test.c (остановка после этапа предварительно...
задан 06 окт. '13 в 19:09
10
ответов

Зачем использовать явно бессмысленные инструкции do-while и if-else в макросах?

Во многих макросах C/С++ я вижу код макроса, завернутый в то, что кажется бессмысленным циклом do while. Вот примеры. #define FOO(X) do { f(X); g(X); } while (0) #define FOO(X) if (1) { f(X); g(X); } else Я не вижу, что делает do while. Почему б...
задан 30 сент. '08 в 20:36
1
ответ

Почему все файлы C, написанные моим преподавателем, начинаются С#?

Почему все файлы C, написанные моим преподавателем, начинаются С#? Я просматриваю некоторые примечания к курсу, и каждый исходный файл программы C начинается с единственного # в первой строке программы. Затем появляются пробелы и следуют за другим...
задан 11 авг. '17 в 10:17
3
ответов

Почему #ifndef и #define используются в файлах заголовков С++?

Я видел такой код, как обычно, в начале файлов заголовков: #ifndef HEADERFILE_H #define HEADERFILE_H И в конце файла #endif Какова цель этого?
задан 31 окт. '09 в 13:06
3
ответов

Объединение С++ и C - как работает #ifdef __cplusplus?

Я работаю над проектом с большим количеством устаревшего кода C. Мы начали писать на С++, имея в виду, наконец, преобразовать устаревший код. Я немного смущен тем, как взаимодействуют C и С++. Я понимаю, что, завернув код C с помощью extern "C...
задан 24 сент. '10 в 20:03
3
ответов

Как надежно определить Mac OS X, iOS, Linux, Windows в препроцессоре C?

Если есть какой-то кросс-платформенный код C/С++, который должен быть скомпилирован в Mac OS X, iOS, Linux, Windows, как я могу их достоверно обнаружить во время процесса препроцессора?
задан 07 мая '11 в 11:37
6
ответов

Препроцессор дампа GCC определяет

Есть ли способ, чтобы gcc/g++ удалял его препроцессор из командной строки? Я имею в виду такие вещи, как __GNUC__, __STDC__ и т.д.
задан 08 февр. '10 в 22:40
12
ответов

MIN и MAX в C

Где MIN и MAX, определенные в C, если вообще? Каков наилучший способ их реализации, как можно более универсально и безопасно? (Предпочтительнее использовать расширения/встроенные компиляторы для компиляторов основного потока.)
задан 09 авг. '10 в 7:49
10
ответов

Как я могу увидеть исходный файл C/С++ после предварительной обработки в Visual Studio?

Скажем, у меня есть исходный файл со многими предпроцессорными директивами. Можно ли посмотреть, как он выглядит после того, как препроцессор с этим занят?
задан 10 нояб. '08 в 10:11
12
ответов

Предупреждение компилятора "No newline at end of file"

В чем причина следующего предупреждения в некоторых компиляторах на С++? Нет строки в конце файла Зачем мне пустую строку в конце файла источника/заголовка?
задан 16 сент. '08 в 16:38
5
ответов

Как сделать переменный макрос (переменное количество аргументов)

Я хочу написать макрос в C, который принимает любое количество параметров, а не определенное число Пример: #define macro( X ) something_complicated( whatever( X ) ) где X - любое количество параметров Мне нужно это, потому что whatever перегру...
задан 25 марта '09 в 5:08
38
ответов

Когда макросы С++ полезны?

Препроцессор C оправданно боится и избегает сообщества С++. Встроенные функции, константы и шаблоны обычно являются более безопасной и превосходной альтернативой #define. Следующий макрос: #define SUCCEEDED(hr) ((HRESULT)(hr) >= 0) никоим ...
задан 18 сент. '08 в 22:46
11
ответов

#pragma pack effect

Мне было интересно, может ли кто-нибудь объяснить мне, что делает препроцессор #pragma pack, и что еще более важно, почему он хотел бы использовать его. Я проверил страницу MSDN, в которой была проницательность, но я надеялся услышать больше от люд...
задан 23 июля '10 в 16:12
16
ответов

Как проверить ОС с помощью директивы препроцессора?

Мне нужен мой код, чтобы делать разные вещи на основе операционной системы, на которой он компилируется. Я ищу что-то вроде этого: #ifdef OSisWindows // do Windows-specific stuff #else // do Unix-specific stuff #endif Есть ли способ сделать это? Е...
задан 27 сент. '08 в 2:44