Вопросы по теме 'variadic-macros'

Добавление к __VA_ARGS__
Я знаю, что могу сделать это: #define MACRO(api, ...) \ bool ret = api(123, ##__VA_ARGS__); Это просто пример, это часть более сложного решения. Дело в том, что мне нужно добавить переменное количество аргументов к первым 123. ##...
8761 просмотров
schedule 10.07.2022

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

Использование вариативных макросов или шаблонов для реализации набора функций
У меня есть набор методов, используемых для создания и инициализации набора объектов. Все они выглядят почти одинаково, за исключением количества аргументов, которые передаются в функцию Init : ObjectType* CreateObjectType(Arg1 a1, Arg2 arg2, ......
3734 просмотров
schedule 09.05.2022

Создание списка строковых аргументов макроса с вариативными параметрами и поздними расширениями
У меня следующая проблема - задано переменное количество аргументов макроса argX для создания списка строковых аргументов #argX Пример: LIST(A, B) -> "A", "B" LIST(A, B, C) -> "A", "B", "C" Я использую Boost, поэтому приведенный выше...
209 просмотров

Расширение макроса внутри макроса
Я пытаюсь создать макрос LOGDEBUG: #ifdef DEBUG #define DEBUG_TEST 1 #else #define DEBUG_TEST 0 #endif #define LOGDEBUG(...) do { if (DEBUG_TEST) syslog(LOG_MAKEPRI(LOG_SYSLOG, LOG_DEBUG), __VA_ARGS__); } while (0) ... size_t haystack_len =...
257 просмотров
schedule 28.10.2022

Как написать макрос assert на С++ с различным количеством информационных аргументов?
Пытаюсь написать макрос dbgassert аналогичный стандартному assert . В дополнение к тому, что делает assert , я хочу dbgassert напечатать произвольное количество дополнительных параметров (содержащих отладочную информацию). То, что у меня...
1761 просмотров

Макросы Variadic: расширение вставляемых токенов
Мне интересно, возможно ли «вложить» вариативные вызовы макросов. Меня действительно интересуют только GCC и Clang. Мое определение макроса выглядит так: /** * @brief Invoke an instance method. */ #define $(obj, method, ...) \ ({ \...
482 просмотров
schedule 20.09.2023

C вариативный макрос не компилируется
У меня есть проблема с этим кодом, который я написал. GCC это не нравится: #define _DEBUG_ADD(string, ...) \ do{ \ if (EVALUATE_TYPE(string)){ \ size_t...
797 просмотров
schedule 24.12.2023

как правильно развернуть макрос?
Мне нужно иметь возможность расширить макрос для создания typedef, который я использую для своего приложения. Макрос создает простой typedef. Вопрос, который у меня есть, заключается в том, как __VA_ARGS__ (т.е. вы теряете аргументы дальше по...
129 просмотров

Как исправить проблемы, связанные с переменными макросами при перегрузке макросов в MSVC ++ (Microsoft Visual Studio)?
Вдохновленный такого рода решения , я написал ниже код, который имитирует «перегрузку макросов» . #include<iostream> #define CONCATE_(X,Y) X##Y #define CONCATE(X,Y) CONCATE_(X,Y) #define UNIQUE(NAME) CONCATE(NAME, __LINE__) #define...
514 просмотров

Кормление boost::format с вариативными параметрами
Я пытаюсь написать функцию ведения журнала, которая принимает список аргументов с переменным числом аргументов и печатает в безопасном месте. vprintf кажется очевидным ответом, но я не могу найти безопасный способ обработки, когда строка формата...
350 просмотров

Удивительное расширение вариативных макросов препроцессора GNU C при наличии оператора ##
Если мы определяем макрос #define M(x, ...) { x, __VA_ARGS__ } а затем используйте его, передавая себя в качестве аргумента M(M(1, 2), M(3, 4), M(5, 6)) затем он расширяется до ожидаемой формы: { { 1, 2 }, { 3, 4 }, { 5, 6 } }...
126 просмотров
schedule 11.12.2022

Макросы с переменным числом аргументов с нулевыми аргументами не компилируются даже с ## __ VA_ARGS__
Если я попытаюсь скомпилировать следующий код: template <typename... TArgs> void Dummy(const TArgs &...args) { } #define DUMMY(...) Dummy("Hello", ##__VA_ARGS__) int main() { DUMMY(); } Я получаю следующую ошибку...
169 просмотров
schedule 15.06.2022

Заставить printf () всегда печатать имя функции с оболочкой
Как я могу всегда печатать имя функции, в которой вызывается printf() , не предоставляя информацию каждый раз?
50 просмотров
schedule 22.05.2022