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

99
Прагма в макросе определения

Есть ли способ встроить оператор прагмы в макрос с другими операторами? Я пытаюсь добиться чего-то вроде: #define DEFINE_DELETE_OBJECT(type) \ void delete_ ## type_(int handle); \ void delete_ ## type(int handle); \ #pragma weak delete_ ## type_ = delete_ ## type Я согласен с решениями по усилению...

99
Отступы #defines

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

96
Проблемы с компиляцией, сборкой или архивированием с Xcode 4 (и зависимостями)

Этот вопрос развился за последние несколько недель, чтобы охватить более общие проблемы с xcode4 (и модернизация проектов из более старых xcodeс). Однако многие проблемы можно решить, следуя тем же инструкциям. Если у вас есть какие-либо из следующих проблем, попробуйте методы, указанные в...

94
Почему макросы препроцессора - зло и каковы альтернативы?

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

92
Как сравнивать строки в условных директивах препроцессора C

Мне нужно сделать что-то подобное в C. Это работает, только если я использую char, но мне нужна строка. Как я могу это сделать? #define USER "jack" // jack or queen #if USER == "jack" #define USER_VS "queen" #elif USER == "queen" #define USER_VS "jack" #endif...

91
Объединить int в строку с помощью препроцессора C

Я пытаюсь понять, как я могу объединить #define'd int в #define' d строку с помощью препроцессора C. Мой компилятор - GCC 4.1 для CentOS 5. Решение также должно работать для MinGW. Я хотел бы добавить номер версии к строке, но единственный способ заставить его работать - это сделать копию номера...

88
Какие применения оператора препроцессора ## и какие ошибки следует учитывать?

Как упоминалось во многих моих предыдущих вопросах, я работаю через K&R, а сейчас занимаюсь препроцессором. Одна из наиболее интересных вещей - чего я никогда раньше не знал из своих предыдущих попыток изучить C - это ##оператор препроцессора. Согласно K&R: Оператор препроцессора ##...

87
Простой способ использовать переменные перечислимых типов в качестве строки в C?

Вот что я пытаюсь сделать: typedef enum { ONE, TWO, THREE } Numbers; Я пытаюсь написать функцию, которая будет выполнять случай переключения, подобный следующему: char num_str[10]; int process_numbers_str(Numbers num) { switch(num) { case ONE: case TWO: case THREE: { strcpy(num_str, num); //some...

85
Могут ли директивы препроцессора #if быть вложенными в C ++?

У меня вопрос о директивах препроцессора в c ++: Например: #ifndef QUESTION //some code here #ifndef QUESTION //some code here #endif #endif Можем ли мы использовать его таким образом, и может компилятор C ++ соответствовать ifndefи endifв правильном направлении?...

84
Как именно работает трюк с двойной строкой?

По крайней мере, некоторые препроцессоры C позволяют вам преобразовать значение макроса в строку, а не его имя, передав его через один функционально-подобный макрос другому, который преобразовывает его в строку: #define STR1(x) #x #define STR2(x) STR1(x) #define THE_ANSWER 42 #define...

83
#ifdef внутри #define

Я пытаюсь написать что-то вроде этого: #define COV_ON(x) \ #ifdef COVERAGE_TOOL \ _Pragma (COVERAGE #x) #endif Есть ли способ дать COV_ONтакое определение ? Я знаю, что то, что я сделал выше, неправильно, так как я не могу использовать #ifdef#define. ( #не разрешенный символ в #define). Так есть...

81
#define vs const в Objective-C

Я новичок в Objective-C, и у меня есть несколько вопросов относительно constдирективы предварительной обработки #define. Во-первых, я обнаружил, что невозможно определить тип константы с помощью #define. Это почему? Во-вторых, есть ли преимущества в использовании одного из них перед другим?...

81
Макросы многострочного препроцессора

Как сделать макрос многострочного препроцессора? Я умею составлять одну строчку: #define sqr(X) (X*X) но мне нужно что-то вроде этого: #define someMacro(X) class X : public otherClass { int foo; void doFoo(); }; Как я могу заставить это работать? Это только пример, настоящий макрос может быть...

15
Считать строки исходного файла, используя макросы?

Возможно ли с помощью препроцессора C / C ++ подсчитать строки в исходном файле либо в макросе, либо в некотором виде, доступном во время компиляции? Например, я могу заменить MAGIC1, MAGIC2и MAGIC3в следующем, и получить значение 4 как-то при использовании MAGIC3? MAGIC1 // can be placed wherever...