variadic-macros

Я хочу передать строку версии в команде компиляции: $ g++ -Wall -D VERSION="2013-12-03 02:15:21, commit cb060df" -o main main.cpp В моем коде есть следующее: #define TOSTR_(x) #x #define STRINGIFY(x) TOSTR_(x) #define VERSION_STR STRINGIFY(VERSION) Это не работает, потому что макрос VERSION содержит з...

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

Итак, у меня есть макрос, который прекрасно работает в GCC, но не в компиляторе Microsoft C++. Я надеюсь, что кто-то может знать о обходном пути, или, возможно, может объяснить мне, почему он ведет себя таким образом. Я уверен, что этот макрос не совсем "стандартный", но он действительно поможет мне. Вот ф...

Я хочу реализовать новый макрос max/min, который может принимать более двух параметров, например: #define max( ... ) ... И затем, я могу использовать его следующим образом: max( p0, p1, p2, p3 ) max( 2, 4, 100 ) max( 1,2,3,4,5,6,7 ) -> 7 Может ли этот макрос помочь нам реализовать этот макрос? #de...

У меня есть макрос FOO(...), который получает неизвестное число параметров. Я хочу бросить все эти парамы в uint. Есть ли способ достичь этого?...

С gcc 4.6.3 (with-ansi-pedantic), у меня есть следующий код: // Argument counting macro #define NARGS(...) NARGS_(__VA_ARGS__, 5, 4, 3, 2, 1) #define NARGS_(_1, _2, _3, _4, _5, _, ...) _ static inline void fi_init_(size_t nargs, fileinfo_t *finfo, ...) { // Default fmt/type values char* fmt = "CD"...

Мы делаем некоторую очистку кода, исправляем сравнения со знаком / без знака, запускаем статический анализ и т. д. На основе кода C, C++ и Java. Одно из предупреждений, которые мы получаем, это warning: ISO C does not permit named variadic macros И его сопутствующее предупреждение warning: ISO C99 requir...

есть известный С пустыми аргументами для вариативных макросов в C99. пример: #define FOO(...) printf(__VA_ARGS__) #define BAR(fmt, ...) printf(fmt, __VA_ARGS__) FOO("this works fine"); BAR("this breaks!"); использование BAR() выше действительно неверно в соответствии со стандартом C99, так как он ...