Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ MSVC&x2B+;如何将某物输出到;“产出”-编译期间的窗口_C++_Visual C++ - Fatal编程技术网

C++ MSVC&x2B+;如何将某物输出到;“产出”-编译期间的窗口

C++ MSVC&x2B+;如何将某物输出到;“产出”-编译期间的窗口,c++,visual-c++,C++,Visual C++,有时我看到某些项目在编译过程中会向输出写入一些内容 如何在MSVC中实现这一点++ 谢谢 您希望在源代码中包含以下内容: #pragma message("Hello World") 使用#pragma消息,例如 #define MESSAGE(t) message(__FILE__ "(" STRINGXXX(__LINE__) ") : " t) #define STRINGXXX(x) STRINGYYY(x) #define STRINGYYY(x) #x 那么如果你把 #pragm

有时我看到某些项目在编译过程中会向输出写入一些内容

如何在MSVC中实现这一点++


谢谢

您希望在源代码中包含以下内容:

#pragma message("Hello World")
使用
#pragma消息
,例如

#define MESSAGE(t) message(__FILE__ "(" STRINGXXX(__LINE__) ") : " t)
#define STRINGXXX(x) STRINGYYY(x)
#define STRINGYYY(x) #x
那么如果你把

#pragma MESSAGE("TODO: testing")
它将显示为可单击的消息,就像正常的编译器消息一样

在预处理某个源文件时,您可以在其中一个源文件中使用它来输出字符串


此外,当执行自定义、预构建或后构建步骤时,“description”字段将回显到标准输出。

正如Timo Geusch所说的那样:
#pragma message
指令用于此目的

作为模板元编程的一个奇特的副作用,还可以将编译器用作计算器:)

模板结构消息;
模板结构Fac{
静态常数int v=i*Fac::v;
};
模板结构Fac{static const int v=1;};
消息m;
将导致输出消息

Line 10: error: aggregate 'Message<3628800> m' has incomplete type and cannot be defined
第10行:错误:聚合“消息m”的类型不完整,无法定义

为什么STRINGXXX和STRINGYYY不是一个宏?行是一个数字,需要转换成字符串。您可以使用另一个宏,以避免字符串“LINE”到处都是。您也可以使用crtdefs.h中定义的_CRT_STRINGIZE,因此您只需要定义宏消息
Line 10: error: aggregate 'Message<3628800> m' has incomplete type and cannot be defined