8
ответов

существует ли способ записать макросы со списком аргумента переменной в Visual C++?

Насколько я знаю в gcc, можно записать что-то как: #define DBGPRINT (fmt...) printf (fmt); существует ли способ сделать это в VC ++?
вопрос задан: 31 March 2015 01:52
3
ответа

Variadic macros with zero arguments, and commas

Consider this macro: #define MAKE_TEMPLATE(...) template When used with zero arguments it produces bad code since the compiler expects an identifier after the comma. ...
вопрос задан: 26 February 2016 19:58
2
ответа

Препроцессор C++ __ VA_ARGS __ количество аргументов

Простой вопрос, для которого я не мог найти ответ в сети. В variadic макросах аргумента, как найти количество аргументов? Я хорошо с препроцессором повышения, если он имеет решение. Если это делает...
вопрос задан: 31 May 2018 00:36
2
ответа

Добавление параметров по умолчанию к variadic макросу

Действительно ли возможно добавить параметры по умолчанию перед аргументом переменной в variadic макросе? например, у меня есть версия макроса что-то как #define МАКРОС (arg1...) func (arg1, ## __ VA_ARGS __), я хотел бы...
вопрос задан: 11 June 2016 21:29
1
ответ

Это правильный способ проверить, пуст ли список аргументов макроса переменной

Я искал способ проверить, пуст ли список аргументов макроса переменной. Все решения, которые я нахожу, кажутся либо довольно сложными, либо используют нестандартные расширения. Я думаю, что я нашел легкий ...
вопрос задан: 29 March 2019 12:10
1
ответ

Макросы с переменным числом аргументов с нулевыми аргументами

Я работаю над макросом вызова, #define CALL (f, ...) FN (f) -> call ((ref (new LinkedList ()), __VA_ARGS__)) который при вызове CALL (print, 2,3,4,5); добавляет 2 3 4 5 в связанный список (, перегружен в ...
вопрос задан: 29 March 2019 10:10
0
ответов

Трюк с вариативным макросом

Какой трюк для создания вариативного макроса FOO (a1, a2, a3, ..., an), который расширяется до FOOn ( a1, a2, a3, ..., an) для значений n в любом предварительно выбранном ограниченном диапазоне, который вы выберете? То есть, FOO (a) ...
вопрос задан: 15 January 2018 04:39
0
ответов

Функция C, которая вычисляет общий размер аргументов

В настоящее время я пытаюсь вычислить общий размер аргументов, переданных в функцию, в байтах. Теоретически можно просто записать sizeof (x) для каждого аргумента. Однако это огромная трата ...
вопрос задан: 23 May 2017 12:31
0
ответов

Стандартная альтернатива трюку GCC ## __ VA_ARGS__?

Существует известная проблема с пустыми аргументами для макросов с переменным числом аргументов в C99. пример: #define FOO (...) printf (__ VA_ARGS__) #define BAR (fmt, ...) printf (fmt, __VA_ARGS__) FOO ("отлично работает"); ...
вопрос задан: 23 May 2017 11:47
0
ответов

Очистка кода C/C++ выявила проблемы с вариативными макросами.

Мы проводим некоторую очистку кода, исправляя сравнения со знаком/без знака, запускаем статический анализ и т. д. в коде. основа C, C++ и Java. Одно из предупреждений, которое мы получаем, это предупреждение: ISO C не...
вопрос задан: 23 May 2017 11:44
0
ответов

How to single out the first parameter sent to a macro taking only a variadic parameter

I try to get at the first actual parameter sent to a variadic macro. This is what I tried, and which does not work in VS2010: #define FIRST_ARG(N, ...) N #define MY_MACRO(...) decltype(FIRST_ARG(...
вопрос задан: 19 June 2016 15:03
0
ответов

Вставка токена в C

Прочитав о VA_NARG, я попытался реализовать перегрузку функций в зависимости от количества аргументов в C с помощью макросов. Теперь проблема: void hello1 (char * s) {...} void hello2 (char * s, char * ...
вопрос задан: 14 March 2016 20:02
0
ответов

MSVC не раскрывает __VA_ARGS__ правильно

Обратите внимание на этот код: #define F (x, ...) X = x и VA_ARGS = __VA_ARGS__ #define G (...) F (__ VA_ARGS__) F (1, 2, 3) G (1, 2, 3) Ожидаемый результат - X = 1 и VA_ARGS = 2, 3 для обоих макросов, и это ...
вопрос задан: 11 March 2016 11:03
0
ответов

Могу ли я определить макросы препроцессора C с переменным числом аргументов с __VA_ARGS в середине вместо конца?

GCC жалуется, если я делаю это: #define M (obj, met, ..., contents) obj ## _ ## met (const void * self, __VA_ARGS__) {\ contents \} Я получил 2 причины: ошибка: отсутствует ')' в параметре макроса ...
вопрос задан: 29 February 2016 22:21
0
ответов

Являются ли макросы Variadic нестандартными?

Для отладочных сборок я обычно использую Clang, так как он лучше форматирует предупреждения и ошибки и немного упрощает их отслеживание и исправление. Но недавно после добавления макроса с переменным числом ...
вопрос задан: 18 April 2015 17:27
0
ответов

Расширение макросов с переменным числом аргументов MSVC ++

Итак, у меня есть макрос, который хорошо работает в GCC, но не в компиляторе Microsoft C ++. Я надеюсь, что кто-то знает обходной путь или, возможно, сможет объяснить мне, почему он так себя ведет. Я уверен, что это ... .
вопрос задан: 30 March 2015 13:32
0
ответов

В дополнение к __VA_ARGS __

Я знаю, что могу сделать это: #define MACRO (api, ...) \ bool ret = api (123, ## __ VA_ARGS__); Это просто пример, это часть более сложного решения. Дело в том, что мне нужно добавить ...
вопрос задан: 30 March 2015 13:29
0
ответов

Улучшенный макрос LOG () с использованием шаблонного метапрограммирования

Типичное решение для ведения журнала на основе макросов LOG () может выглядеть примерно так: #define LOG (msg) \ std :: cout << __FILE__ << "(" << __LINE__ << "):" << msg << std :: ...
вопрос задан: 8 April 2014 22:53
0
ответов

Можно ли предотвратить удаление запятой с пустым __VA_ARGS__ в Visual C ++?

В Visual Studio 2005 у меня есть макрос, который выглядит как это (пример !!): #define MY_CALL (FUN, ...) \ if (prepare (x, y)) {\ FUN (__ VA_ARGS__); \} / ** / Пока функция принимает ...
вопрос задан: 26 February 2014 17:27