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

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

19
#ifdef vs #if - что лучше / безопаснее как метод включения / отключения компиляции определенных участков кода?
Это может быть вопросом стиля, но в нашей команде разработчиков есть некоторые разногласия, и мне было интересно, есть ли у кого-нибудь еще какие-нибудь идеи по этому поводу ... По сути, у нас есть некоторые отладочные операторы печати, которые мы отключаем во время нормальной разработки. Лично я предпочитаю делать следующее: //---- …


3
Какой предопределенный макрос я могу использовать для обнаружения лязга?
Я пытаюсь определить компилятор, использованный для компиляции моего исходного кода. Я легко могу найти предопределенные макросы для проверки MSVC или GCC ( например, см. Http://predef.sourceforge.net/ ), но я не могу найти ни одного макроса для проверки на наличие clang. Кто-нибудь знает, определяет ли 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
Может ли gcc выводить код C после предварительной обработки?
Я использую библиотеку с открытым исходным кодом, которая, кажется, имеет множество директив предварительной обработки для поддержки многих языков, отличных от C. Чтобы я мог изучить, что делает библиотека, я хотел бы увидеть код C, который я компилирую после предварительной обработки , больше похоже на то, что я напишу. Может ли …

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 что не …
104 c++  c  macros  c-preprocessor 

11
Макрос против функции в C
Я всегда видел примеры и случаи, когда использование макроса лучше, чем использование функции. Может ли кто-нибудь объяснить мне на примере недостаток макроса по сравнению с функцией?

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и каков результат?

12
Препроцессор C ++ __VA_ARGS__ количество аргументов
Простой вопрос, на который я не нашел ответа в сети. В макросах с переменными аргументами, как найти количество аргументов? Я согласен с препроцессором ускорения, если у него есть решение. Если это имеет значение, я пытаюсь преобразовать переменное количество аргументов макроса, чтобы увеличить последовательность препроцессора, список или массив для дальнейшей обработки.

8
Отступы #defines
Я знаю, что #defines и т. Д. Обычно не имеют отступа. Зачем? Я сейчас работаю над кодом, который представляет собой ужасную смесь #defines, #ifdefs, #elses, #endifs и т. Д. Все это часто смешивается с обычным кодом C. Отсутствие отступов#define s делает их трудными для чтения. А смесь кода с отступом …


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 не может заархивировать приложение …

8
Почему макросы препроцессора - зло и каковы альтернативы?
Я всегда спрашивал об этом, но никогда не получал действительно хорошего ответа; Я думаю, что почти любой программист, даже до написания первого «Hello World», сталкивался с такими фразами, как «макрос никогда не должен использоваться», «макросы - это зло» и так далее. У меня вопрос: почему? Есть ли реальная альтернатива новому …

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