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

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

В чем разница между #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
11
ответов

Зачем использовать явно бессмысленные инструкции 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
2
ответов

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

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

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

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

Объединение С++ и 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
3
ответов

Определить макрос препроцессора через cmake

Как определить переменную препроцессора через cmake? Эквивалентный код будет #define foo.
задан 26 янв. '12 в 14:35
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
ответов

С#define макрос для отладочной печати

Попытка создать макрос, который можно использовать для отладочных сообщений печати, когда DEBUG определен, например, следующий псевдо-код: #define DEBUG 1 #define debug_print(args ...) if (DEBUG) fprintf(stderr, args) Как это делается с макросом?
задан 29 окт. '09 в 19:17
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