Запитання з тегом «c-preprocessor»

Текстовий макропроцесор, застосований перед компіляцією програм на мовах C і C ++. Цей тег також може бути використаний для запитань щодо інших компіляторів / мов, похідних або які мають однакові функції, наприклад, #directives в Objective-C або C #.

19
#ifdef vs #if - що краще / безпечніше як метод увімкнення / вимкнення компіляції окремих розділів коду?
Це може бути питанням стилю, але в нашій команді розробників є дещо, і я поцікавився, чи хтось ще мав ідеї з цього приводу ... В основному, у нас є кілька виправлень налагодження друку, які ми вимикаємо під час нормальної розробки. Особисто я вважаю за краще робити наступне: //---- SomeSourceFile.cpp ---- …

3
Який заздалегідь заданий макрос я можу використовувати для виявлення кланг?
Я намагаюся виявити компілятор, який використовується для складання мого вихідного коду. Я легко можу знайти заздалегідь задані макроси, щоб перевірити наявність MSVC або GCC (див. Http://predef.sourceforge.net/ наприклад), але я не можу знайти жодного макросу, щоб перевірити наявність кланг. Хтось знає, чи clang визначає такий макрос __CLANG__, щоб знати, що зараз …


10
C / C ++ номер рядка
З метою налагодження чи можу я отримати номер рядка в компіляторах C / C ++? (стандартний спосіб або конкретні способи для певних компіляторів) напр if(!Logical) printf("Not logical value at line number %d \n",LineNumber); // How to get LineNumber without writing it by my hand?(dynamic compilation)

6
Чи може вивести код Ccc після попередньої обробки?
Я використовую бібліотеку з відкритим кодом, яка, здається, має багато директив попередньої обробки для підтримки багатьох мов, крім C. Так що я можу вивчити, що робить бібліотека, я хотів би побачити код C, який я збираю після попередньої обробки , більше, як те, що я писав би. Чи може gcc …

7
Кома в макросі C / C ++
Скажімо, у нас є такий макрос #define FOO(type,name) type name Якими ми могли б користуватися FOO(int, int_var); Але не завжди так просто: FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2 Звичайно, ми могли б зробити: typedef std::map<int, int> map_int_int_t; FOO(map_int_int_t, map_var); // OK що …
103 c++  c  macros  c-preprocessor 

11
Макрос проти функції в С
Я завжди бачив приклади та випадки, коли використання макросу краще, ніж використання функції. Чи може хтось пояснити мені на прикладі недолік макросу порівняно з функцією?

8
Як визначити символ препроцесора в Xcode
Чи можливо встановити символ для умовної компіляції, встановивши властивості в проекті Xcode? Моя мета - створити символ, доступний для всіх файлів, без використання імпорту / включення, щоб набір загальних класів мав особливу поведінку в деяких проектах. Як і далі, але з моєю власною символікою. #if TARGET_IPHONE_SIMULATOR ... #endif

4
Роль #ifdef та #ifndef
#define one 0 #ifdef one printf("one is defined "); #ifndef one printf("one is not defined "); У цьому яка роль #ifdefі #ifndef, і який результат?

8
Відступ #defines
Я знаю, що #defines і т.д. зазвичай ніколи не відступають. Чому? Я зараз працюю над деяким кодом, який містить жахливу суміш #defines, #ifdefs, #elses, #endifs тощо. Все це часто змішується з нормальним кодом C. Невідступ #defines робить їх важкими для читання. І суміш відступного коду з невідступними #defines - це …

12
Препроцесор C ++ __VA_ARGS__ кількість аргументів
Просте запитання, на яке я не зміг знайти відповіді в мережі. Як у макросах різних аргументів як знайти кількість аргументів? Я добре з препроцесором підвищення, якщо він має рішення. Якщо це має значення, я намагаюся перетворити змінну кількість макроаргументів для підвищення послідовності, списку або масиву препроцесора для подальшої обробки.


4
Прагма у визначенні макросу
Чи є якийсь спосіб вбудувати висловлювання прагми в макро з іншими твердженнями? Я намагаюся досягти чогось типу: #define DEFINE_DELETE_OBJECT(type) \ void delete_ ## type_(int handle); \ void delete_ ## type(int handle); \ #pragma weak delete_ ## type_ = delete_ ## type Я добре з розширювальними рішеннями (крім хвилі), якщо такі …

14
Компіляція, побудова або архівування проблем із Xcode 4 (та залежностями)
Це питання розвивалося протягом останніх кількох тижнів, щоб охопити більш загальні питання xcode4 (і проекти з модернізації старіші xcodeз). Однак багато питань можна вирішити, дотримуючись тих самих наборів інструкцій. Якщо у вас є якісь із наведених нижче проблем, спробуйте методи у прийнятій відповіді: Xcode 4 не може архівувати додаток Xcode …

8
Чому макроси препроцесора є злими і які альтернативи?
Я завжди про це питав, але ніколи не отримував справді хорошої відповіді; Я думаю, що майже будь-який програміст ще до написання першого "Hello World" стикався з фразою типу "макрос ніколи не можна використовувати", "макрос - це зло" тощо, моє запитання: чому? З новим C ++ 11 чи існує реальна альтернатива …

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