MSVC ++, как выводить что-то в окно вывода во время компиляции - PullRequest
2 голосов
/ 24 июля 2009

иногда я вижу, что некоторые проекты записывают что-то в вывод во время компиляции.

как этого можно достичь в MSVC ++

спасибо!

Ответы [ 4 ]

13 голосов
/ 24 июля 2009

использовать #pragma message например,

#define MESSAGE(t) message(__FILE__ "(" STRINGXXX(__LINE__) ") : " t)
#define STRINGXXX(x) STRINGYYY(x)
#define STRINGYYY(x) #x

, тогда, если вы введете

#pragma MESSAGE("TODO: testing")

, оно будет отображаться как сообщение, реагирующее на клики, как и обычные сообщения компилятора

6 голосов
/ 24 июля 2009

Вы хотите включить что-то подобное в ваш исходный код:

#pragma message("Hello World")
2 голосов
/ 24 июля 2009

Вы можете использовать # прагматическое сообщение в одном из ваших исходных файлов для вывода строки при предварительной обработке этого файла.

Кроме того, при выполнении пользовательского шага до или после сборкивыполняется, поле «описание» выводится на стандартный вывод.

1 голос
/ 24 июля 2009

Как сказал Тимо Гойш: для этого используется директива #pragma message.

В качестве экзотического побочного эффекта метапрограммирования шаблона также можно использовать компилятор в качестве калькулятора:)

template<int i> struct Message;

template<int i> struct Fac {
   static const int v = i * Fac< i-1 >::v; 
};

template<> struct Fac<1> { static const int v = 1; };

Message< Fac<10>::v > m;

приведет к выходному сообщению

Line 10: error: aggregate 'Message<3628800> m' has incomplete type and cannot be defined
...