как printf () std :: this_thread :: get_id () в C ++? - PullRequest
0 голосов
/ 14 апреля 2020

Я пытался привести к void* и использовать %p. Я также пробовал intptr_t с форматом %lx. Оба раза я получаю ошибку «Invalid Cast».

Я использую -Wall -Werror, который проверяет, что аргументы printf() соответствуют строке формата функции. Поэтому я не могу просто рассчитывать, что get_id() оставит 4- или 8-байтовое значение в стеке и просто напечатает это значение как шестнадцатеричное.

Я использую g cc версия 9.2.1 20190827 (Red Hat 9.2.1-1) (G CC)

Операционная система - Fedora, выпуск 31 (Тридцать один). Процессор 64-битный Intel x86.

1 Ответ

2 голосов
/ 14 апреля 2020

Использовать потоки:

std::ostringstream oss;
oss << std::this_thread::get_id() << std::endl;
printf("%s\n", oss.str().c_str());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...