Несмотря на то, что OutputDebugString
действительно печатает строку символов в консоли отладчика, это не совсем то же самое, что printf
, поскольку последняя способна форматировать аргументы с использованием нотации %
и переменное число аргументов, что-то OutputDebugString
не делает.
Я бы сказал, что макрос _RPTFN
с аргументом _CRT_WARN
лучше подходит в этом случае - он форматирует главную строку так же, как printf
, записывая результат на консоль отладчика.
Небольшая (и, на мой взгляд, странная) оговорка в том, что для нее требуется хотя бы один аргумент после строки формата (тот, который содержит все %
для подстановки), ограничение printf
страдает не от.
Для случаев, когда вам нужна функциональность, подобная puts
- нет форматирования, просто пишите строку как есть - есть ее брат _RPTF0
(который игнорирует аргументы после строки форматирования, еще одно странное предостережение). Или OutputDebugString
конечно.
И, между прочим, есть все от _RPT1
до _RPT5
, но я их не пробовал. Честно говоря, я не понимаю, зачем предоставлять так много процедур, которые делают одно и то же.