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. 智能感知停止編譯
- 4. Eclipse在小牛停止編譯後
- 5. JAXWS wsimport停止重新編譯
- 6. 的Eclipse停止編譯的renderScript文件
- 7. mixin模板:如何停止編譯?
- 8. Android項目停止識別編譯器
- 9. 立即停止並行編譯
- 10. 宏在Linux上停止編譯
- 11. MojoExecutionException不會停止maven編譯過程
- 12. 在代碼中停止編譯
- 13. 停止問題和後臺編譯?
- 14. CodenameOne在編譯後停止工作
- 15. 如何在C中停止預編譯?
- 16. WiX安裝項目 - 每次編譯後停止編譯
- 17. 首先自動停止Visual C++ 2008編譯編譯錯誤?
- 18. 的Android NDK正在中止停止,無法創建NDK編譯
- 19. IDE 1.8.0及以前的版本中,停止對編譯UNO R3,用來編譯
- 20. Android L編譯器防止反編譯?
- 21. Silverlight項目在「任何CPU」選項下停止編譯
- 22. 更新到Ubuntu 15.04,我的Flex編譯器停止工作
- 23. 如何在編譯cpp文件後停止收到'note'消息?
- 24. 停止SASS將顏色編譯爲字體顏色
- 25. 在液體模板中使用&符號停止編譯它
- 26. 停止斯卡拉編譯特定階段
- 27. 使用GetStatus停止枚舉值的編譯器錯誤
- 28. autotools:我能否停止編譯所有東西以生成tar.gz?
- 29. 爲什麼Unity在一些錯誤後停止編譯?
- 30. Grails JMS/ActiveMQ停止工作當代碼改變/重新編譯
如果您告訴我們爲什麼要編譯停止,我們可能會提供更好的答案。 – Michael 2010-01-23 22:22:29
對GCC 3-4.1的約束是否仍然相關? – ideasman42 2016-12-31 02:23:02