libclang / libtooling обрабатывает или отключает все сообщения об ошибках

Я думаю, что каждая вещь в названии ^^
на самом деле я разрабатываю инструмент, использующий libtooling, но я хотел бы подавлять все ошибки (инструмент предназначен для использования только на правильном источнике, поэтому вывод ошибок приводит к выводу stderr …).

1

Решение

Название — libclang / libtooling, так что вот ответ для libclang. Создайте свой CXIndex как это:

bool excludeDeclarationsFromPCH = false;
bool displayDiagnostics = false;
CXIndex index = clang_createIndex((int)excludeDeclarationsFromPCH, (int)displayDiagnostics);

Увидеть документация.

4

Другие решения

Вы хотите перенаправить свой std::cerr выход? Или stderr для каждого дочернего процесса? Если это последний случай, вы можете сделать что-то вроде:

#include <unistd.h>

int fd = dup(2);
int n = open("/dev/null", O_WRONLY);
dup2(n, 2);
close(n);

//... do your thing ...

dup2(fd, 2); // put the stderr back where it belongs :D
close(fd);
0

По вопросам рекламы [email protected]