C: что я должен использовать для сообщений трассировки/диагностики в библиотеке?

В .NET я бы использовал System.Diagnostics.Trace...

Что бы я использовал в C или C++?

прямо сейчас у меня есть макрос:

диагностика включена:

#define DIAG(A) { printf(A); }

отладка выключена:

#define DIAG(A) { if(FALSE) {}}

Есть стандартный способ?


person Cheeso    schedule 27.03.2010    source источник
comment
Обратите внимание, что printf(A) небезопасно, вы должны были использовать printf("%s", A);.   -  person Vlad    schedule 27.03.2010


Ответы (1)


Это зависит от вашей среды. В Windows я бы просто использовал OutputDebugString. . Существуют более сложные и настраиваемые способы, но мне это никогда не понадобилось сам.

Однако не уверен, что есть стандарт для *nix. Сравнительно немного раз, когда я писал код *nix C, я использовал DEBUG envvar и printf.

person Mark Brackett    schedule 27.03.2010
comment
В Unix вам просто нужно использовать stderr. Используйте cerr << A вместо printf(A). В качестве бонуса, это безопасный тип. - person Vlad; 27.03.2010