25
A
回答
38
你可能想#error
:
[email protected]:/tmp$ g++ -Wall -DGoOn -o stopthis stopthis.cpp
[email protected]:/tmp$ ./stopthis
Hello, world
[email protected]:/tmp$ g++ -Wall -o stopthis stopthis.cpp
stopthis.cpp:7:6: error: #error I had enough
[email protected]:/tmp$ cat stopthis.cpp
#include <iostream>
int main(void) {
std::cout << "Hello, world\n";
#ifndef GoOn
#error I had enough
#endif
return 0;
}
[email protected]:/tmp$
+0
这里的一个限制是'#error'不能在宏内部使用,尽管这个问题在目的上是模糊的。 – ideasman42 2014-08-01 10:03:11
+3
我也这么认为,但是我的GCC(4.9)没有停止出错,它继续,显然它不能编译,但它不会停止,这是一个错误还是可以确认? – 2016-01-15 23:53:45
15
我不知道一个#pragma
,但#error
应该做你想要什么:
#error Failing compilation
将终止与错误信息汇编“失败汇编”
6
虽然通常#error
是足够的(和便携式),有时间当你想要使用pragma
时,即当你想在宏中选择性地导致错误。
下面是一个例子使用,其取决于C11的_Generic
和_Pragma
该实施例可确保var
不是int *
或short *
但不是const int *
在编译时。
例子:
#define MACRO(var) do { \
(void)_Generic(var, \
int *: 0, \
short *: 0, \
const int *: 0 _Pragma("GCC error \"const not allowed\"")); \
\
MACRO_BODY(var); \
} while (0)
0
#pragma GCC error "error message"
1
这种工作原理:当它不能找到包含文件
#include <stophere>
GCC停止。如果C14不受支持,我希望gcc停止。
#if __cplusplus<201300L
#error need g++14
#include <stophere>
#endif
0
您可以使用:
#pragma GCC error "my message"
但它不是标准。
相关问题
- 1. 停止编译/解决
- 2. Make:停止编译错误
- 3. JAXWS wsimport停止重新编译
- 4. 停止问题和后台编译?
- 5. 的Eclipse停止编译的renderScript文件
- 6. 宏在Linux上停止编译
- 7. 如何在C中停止预编译?
- 8. 智能感知停止编译
- 9. MojoExecutionException不会停止maven编译过程
- 10. WiX安装项目 - 每次编译后停止编译
- 11. 首先自动停止Visual C++ 2008编译编译错误?
- 12. 的Android NDK正在中止停止,无法创建NDK编译
- 13. IDE 1.8.0及以前的版本中,停止对编译UNO R3,用来编译
- 14. 编译器警告是否会导致intellisense停止工作?
- 15. 代码可以停止编译器优化
- 16. 如何停止VS2008试图编译.ASP页面为Visual Basic?
- 17. 优雅的方式来停止与错误版本编译
- 18. 函数调用停止/含写语句时,但只编译
- 19. 如何在编译错误时停止Visual Studio 2010
- 20. C++编译器驱动程序已停止工作
- 21. 停止斯卡拉编译特定阶段
- 22. MAIN.EXE停止工作在编译图形代码在代码块
- 23. 资产预编译后的Rails 3.1 javascript停止工作;生产
- 24. 为什么编译器软件包在Python 3中停止了?
- 25. Grails JMS/ActiveMQ停止工作当代码改变/重新编译
- 26. 微软的C++优化编译器已停止工作
- 27. Visual Studio 2017突然停止编译打字稿?
- 28. 停止编译CSS尾部空格的SASS
- 29. 如何使Visual Studio中停止“编译”的.js和.css文件
- 30. Xcode 6 Code Sense在编译后停止工作
如果您告诉我们为什么要编译停止,我们可能会提供更好的答案。 – Michael 2010-01-23 22:22:29
对GCC 3-4.1的约束是否仍然相关? – ideasman42 2016-12-31 02:23:02