Вопросы по теме 'variadic-macros'
Добавление к __VA_ARGS__
Я знаю, что могу сделать это:
#define MACRO(api, ...) \
bool ret = api(123, ##__VA_ARGS__);
Это просто пример, это часть более сложного решения. Дело в том, что мне нужно добавить переменное количество аргументов к первым 123. ##...
8761 просмотров
schedule
10.07.2022
Расширение макросов с переменным числом аргументов MSVC ++
Итак, у меня есть макрос, который хорошо работает в GCC, но не в компиляторе Microsoft C ++. Я надеюсь, что кто-нибудь может знать об обходном пути или, возможно, сможет объяснить мне, почему он так себя ведет.
Я уверен, что этот макрос не совсем...
10134 просмотров
schedule
14.05.2022
Использование вариативных макросов или шаблонов для реализации набора функций
У меня есть набор методов, используемых для создания и инициализации набора объектов. Все они выглядят почти одинаково, за исключением количества аргументов, которые передаются в функцию 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 просмотров
schedule
12.11.2022
Расширение макроса внутри макроса
Я пытаюсь создать макрос 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 просмотров
schedule
08.05.2023
Макросы 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 просмотров
schedule
14.06.2022
Как исправить проблемы, связанные с переменными макросами при перегрузке макросов в 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 просмотров
schedule
28.06.2023
Кормление boost::format с вариативными параметрами
Я пытаюсь написать функцию ведения журнала, которая принимает список аргументов с переменным числом аргументов и печатает в безопасном месте. vprintf кажется очевидным ответом, но я не могу найти безопасный способ обработки, когда строка формата...
350 просмотров
schedule
12.06.2023
Удивительное расширение вариативных макросов препроцессора 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