Результаты поиска по запросу "c-preprocessor"

3 ответа

В конечном итоге я выбрал ответ Трэвиса, потому что его факторы еще более значимы, хотя, возможно, именно он был вдохновлен этим.

тавь, что у меня естьX Macro [https://en.wikipedia.org/wiki/X_Macro]для списка элементов определено что-то вроде этого: #define X_MACRO(FN) \ FN(foo) \ FN(bar) \ FN(zip)Это прекрасно работает, и я могу вызвать его, чтобы сгенерировать один и тот ...

4 ответа

 - Я оценил Boost три раза. Он не может пройти оценку ... Большинству сообщений об ошибках повезло, если их признали. Отсутствие признания указывает на более глубокие проблемы в процессе разработки. Я считаю, что макросы препроцессора и встроенные в C ++ стандартные библиотеки являются более безопасным выбором.

у кроссплатформенный код, который должен компилироваться в Linux, Windows, Mac OS. На окнах я должен поддерживать визуальную студию и mingw. Есть несколько частей кода, специфичного для платформы, который я должен поместить в#ifdef .. #endif ...

1 ответ

Действительно, я проверял это и с людьми на работе. Очевидно, что GCC со вкусом PS3 не будет расширять макрос должным образом, если между оператором и операндами не будет пробелов.

у это не работает? 0. #define CONCAT(x, y) x ## y 1. 2. #define VAR_LINE(x) \ 3. int CONCAT(_anonymous, __LINE__) = x 4. 5. #define VAR_LINE2(x) \ 6. int _anonymous ## x = 1 7. 8. int main() 9. { 10. VAR_LINE(1); 11. VAR_LINE(1); ...

ТОП публикаций

3 ответа

Нет ли синтаксической ошибки? Следует printf («один», «два» и «% s. \ N», «три»); быть действительным кодом?

Посмотрите на этот код: #include <stdio.h> #define _ONE "one" #define _TWO_AND ", two and " int main() { const char THREE[6] = "three" ; printf(_ONE _TWO_AND "%s.\n", THREE ); return 0; }printf эффективно: printf("one" ", two and " "%s.\n", ...

5 ответов

Не угадай ...

орое время назад я обнаружил (довольно древний) компилятор C, который сканировал макросы таким образом (псевдокод): if line.startswith("#include") or line.startswith("#define"): ..... Какой вид поднял вопрос для меня, где макросы действительно ...

9 ответов

Можно ли перебирать аргументы в вариационных макросах?

Мне было интересно, можно ли перебирать аргументы, передаваемые в variadic макрос в C99 или используя какие-либо расширения GCC? Например, Можно ли написать общий макрос, который принимает структуру и ее поля передаются в качестве аргументов и ...

1 ответ

stackoverflow.com/questions/3030099/c-c-pragma-in-define-macro/...

ли что-то вроде оператора ANSI C_Pragma в Visual C ++? Например, я пытаюсь определить следующий макрос: #ifdef _OPENMP #define PRAGMA_IF_OPENMP(x) _Pragma (#x) #else // #ifdef _OPENMP #define PRAGMA_IF_OPENMP(x) #endif // #ifdef _OPENMPТак что ...

4 ответа

Идентификатор _ _ VA_ARGS _ _ должен присутствовать только в списке замены функционально-подобного макроса, который использует многоточие в параметрах.

тладочных сборок я обычно использую Clang, так как он лучше форматирует предупреждения и ошибки и немного облегчает их отслеживание и исправление. Но недавно после добавления макроса с переменными аргументами Кланг сказал мне следующее (из ...

2 ответа

Препроцессор C для разделения «int x» на int & x

Мне нужно иметь возможность получить следующее: #define MY_MACRO(PARAM1,PARAM2) \ MY_OTHER_MACRO(TYPENAME_OF(PARAM1),PARAMNAME_OF(PARAM1));\ MY_OTHER_MACRO(TYPENAME_OF(PARAM2),PARAMNAME_OF(PARAM2));\вызывать MY_MACRO(int x,char ...

7 ответов

30

то у меня есть, и мне интересно, как это работает и что на самом деле делает. #define NUM 5 #define FTIMES(x)(x*5) int main(void) { int j = 1; printf("%d %d\n", FTIMES(j+5), FTIMES((j+5))); }Выдает два целых числа: 26 и 30. Как оно это делает?