Перейти к содержанию
    

Помогите написать макрос для команды вывода на печать

Нужно чтобы макросы типа

 

MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, current time: %lu", t ) );

 

MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write client hello" ) );

 

MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, max version: [%d:%d]", buf[4], buf[5] ) );

 

выводили на печать сообщения. Не пойму как передать переменное число аргументов в команду printf. Язык Си.

 

Первый аргумент можно не использовать.

Изменено пользователем Димон Безпарольный

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

#define MBEDTLS_SSL_DEBUG_MSG(errorCode, msg) mbedtls_debug_print_msg(msg);
#define MBEDTLS_SSL_DEBUG_MSG_1ARg(errorCode, msg, arg1) mbedtls_debug_print_msg_1ARg(msg, arg1);
#define MBEDTLS_SSL_DEBUG_MSG_2ARg(errorCode, msg, arg1, arg2) mbedtls_debug_print_msg_2ARg(msg, arg1, arg2);
#define MBEDTLS_SSL_DEBUG_MSG_3ARg(errorCode, msg, arg1, arg2, arg3) mbedtls_debug_print_msg_3ARg(msg, arg1, arg2, arg3);
#define MBEDTLS_SSL_DEBUG_MSG_4ARg(errorCode, msg, arg1, arg2, arg3, arg4) mbedtls_debug_print_msg_4ARg(msg, arg1, arg2, arg3, arg4);

 

Они работают, но исходные сообщения:

 

MBEDTLS_SSL_DEBUG_MSG( 3, ( "update timeout value to %d millisecs", ssl->handshake->retransmit_timeout ) );

 

содержат лишние скобки, которые приходится убирать. таких сообщений около 150. Можно ли как - то поправить макрос чтобы он проходил с этими скобками?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

#define foo(X, ...) printf(X, __VA_ARGS__)
#define bar(...) printf( __VA_ARGS__)

 

Это для gcc. В других компиляторах может быть по-другому.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...