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

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


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(остановка после этапа предварительной обработки): .... int main(void) { int 1 = 5; return 0; } Что, конечно, приводит к ошибке. …
1023 c  linux  gcc  c-preprocessor 

9
Зачем использовать явно бессмысленные операторы do-while и if-else в макросах?
Во многих макросах C / 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делает. Почему бы просто не написать это …
788 c++  c  c-preprocessor  c++-faq 


3
Почему все файлы C, написанные моим лектором, начинаются с одного # в первой строке?
Я просматриваю некоторые примечания к курсу Си, и каждый исходный файл программы на Си начинается с одного #в первой строке программы. Затем есть пустые строки, и после этого другие вещи, сопровождаемые mainфункцией. В чем причина #? (Сейчас истек срок, и я не могу спросить парня.) Вот пример: # #include <stdio.h> …
431 c  c-preprocessor 

4
Сочетание C ++ и C - как работает #ifdef __cplusplus?
Я работаю над проектом, в котором много унаследованного кода на Си . Мы начали писать на C ++ с намерением в конечном итоге также преобразовать устаревший код. Я немного озадачен тем, как взаимодействуют C и C ++. Я понимаю , что обертывание C кода extern "C"на C ++ компилятор не …

14
MIN и MAX в C
Где MINи MAXопределены в C, если вообще? Каков наилучший способ реализовать их как можно более обобщенно и безопасно? (Расширения / встроенные компиляторы для основных компиляторов предпочтительнее.)
301 c  max  min  c-preprocessor 


6
Препроцессор дампа GCC определяет
На этот вопрос есть ответы на Переполнение стека на русском : Как узнать список всех определенных макросов? Есть ли способ для gcc / g ++ выгружать свои определения препроцессора из командной строки? Я имею в виду такие вещи , как __GNUC__, __STDC__и так далее.
249 gcc  g++  c-preprocessor 

11
#pragma pack effect
Мне было интересно, может ли кто-нибудь объяснить мне, что #pragma packделает оператор препроцессора, и, что более важно, почему он захочет его использовать. Я проверил страницу MSDN , которая дала некоторое представление, но я надеялся услышать больше от людей с опытом. Я видел это в коде раньше, хотя я не могу …

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


5
Как сделать вариационный макрос (переменное число аргументов)
Я хочу написать макрос на C, который принимает любое количество параметров, а не конкретное число пример: #define macro( X ) something_complicated( whatever( X ) ) где Xлюбое количество параметров Мне это нужно, потому что whateverон перегружен и может вызываться с 2 или 4 параметрами. Я попытался определить макрос дважды, но …

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

11
Предупреждение компилятора «Нет новой строки в конце файла»
В чем причина следующего предупреждения в некоторых компиляторах C ++? Нет новой строки в конце файла Почему у меня должна быть пустая строка в конце файла источника / заголовка?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.