Запитання з тегом «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; } Що, звичайно, призводить до помилки. …
1022 c  linux  gcc  c-preprocessor 

9
Чому в макросах використовувати зовнішньо безглузді висловлювання до-час та інше?
У багатьох макросах 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робить. Чому б просто не написати …
787 c++  c  c-preprocessor  c++-faq 


3
Чому всі файли C, написані моїм лектором, починаються з одного # у першому рядку?
Я переглядаю кілька конспектів курсу C, і кожен вихідний файл програми C починається з одиниці #в першому рядку програми. Потім з’являються порожні рядки, а за ними - інші mainфункції, за якими слідує функція. У чому причина #? (Зараз термін закінчений, і я не можу реально попросити хлопця.) Ось приклад: # …
431 c  c-preprocessor 

4
Поєднання C ++ та C - як працює #ifdef __cplusplus?
Я працюю над проектом, який має багато застарілого коду С. Ми почали писати на C ++ з наміром врешті-решт перетворити застарілий код. Я трохи розгублений у взаємодії C і C ++. Я розумію , що обгортання C коду extern "C"на C ++ компілятор буде спотворювати C кодових імен, але я …

14
MIN і MAX в С
Де вони MINі MAXвизначені в C, якщо вони взагалі? Який найкращий спосіб здійснити їх, максимально безпечно та ввести безпечно? (Розширення компілятора / вбудовані для основних компіляторів бажано.)
299 c  max  min  c-preprocessor 


6
GCC дамп-препроцесор визначає
На цей питання є відповіді на Stack Overflow на російському : Як дізнатись список усіх визначених макросів? Чи є спосіб для gcc / g ++ скинути свій препроцесор, визначений з командного рядка? Я маю в виду такі речі , як __GNUC__, __STDC__і так далі.
248 gcc  g++  c-preprocessor 

11
#прагма ефект упаковки
Мені було цікаво, чи може хтось пояснити мені, що #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 Чи є спосіб це зробити? Чи є кращий спосіб зробити те ж саме?


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.