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

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

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

В языках программирования C и С++ в чем разница между использованием угловых скобок и использованием кавычек в инструкции include следующим образом? #include <filename> #include "filename"
22 авг. '08 в 1: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 в 16: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 в 17:36
3

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

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

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

Я просматриваю некоторые примечания к курсу Си, и каждый исходный файл программы Си начинается с единственного знака # в первой строке программы. Затем есть пустые строки, и после этого другие вещи, сопровождаемые main функцией. В чем причина #? ...
11 авг. '17 в 7:17
4

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

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

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

Как определить переменную препроцессора через CMake? Эквивалентный код будет #define foo.
26 янв. '12 в 11:35
3

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

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

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

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

MIN и MAX в C

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

#pragma pack effect

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

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

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

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

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

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

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

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

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