GCC#pragma停止编译
是否有一个GCC pragma指令将停止、停止或中止编译过程GCC#pragma停止编译,gcc,Gcc,是否有一个GCC pragma指令将停止、停止或中止编译过程 我正在使用gcc 4.1,但希望在gcc 3.x版本上也能使用pragma。我不知道有什么pragma,但是\error应该满足您的要求: #error Failing compilation 将终止编译,并显示错误消息“编译失败”您可能需要\error: edd@ron:/tmp$ g++ -Wall -DGoOn -o stopthis stopthis.cpp edd@ron:/tmp$ ./stopthis Hello, w
我正在使用gcc 4.1,但希望在gcc 3.x版本上也能使用pragma。我不知道有什么pragma
,但是\error
应该满足您的要求:
#error Failing compilation
将终止编译,并显示错误消息“编译失败”您可能需要\error
:
edd@ron:/tmp$ g++ -Wall -DGoOn -o stopthis stopthis.cpp
edd@ron:/tmp$ ./stopthis
Hello, world
edd@ron:/tmp$ g++ -Wall -o stopthis stopthis.cpp
stopthis.cpp:7:6: error: #error I had enough
edd@ron:/tmp$ cat stopthis.cpp
#include <iostream>
int main(void) {
std::cout << "Hello, world\n";
#ifndef GoOn
#error I had enough
#endif
return 0;
}
edd@ron:/tmp$
edd@ron:/tmp$g++-Wall-DGoOn-o stopthis stopthis.cpp
edd@ron:/tmp$。/停止此操作
你好,世界
edd@ron:/tmp$g++-Wall-o stopthis stopthis.cpp
停止这个。cpp:7:6:error:#error我受够了
edd@ron:/tmp$cat stopthis.cpp
#包括
内部主(空){
std::cout虽然通常#error
是足够的(并且是可移植的),但有时您需要使用pragma
,也就是说,您希望在宏中选择性地导致错误
下面是一个使用示例,它取决于C11的\u Generic
和\u 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)
这项工作:
#include <stophere>
#包括
gcc在找不到包含文件时停止。我希望gcc在C14不受支持时停止
#if __cplusplus<201300L
#error need g++14
#include <stophere>
#endif
#如果uu cplusplus您可以使用:
#pragma GCC error "my message"
但是它不是标准的。如果您告诉我们为什么要停止编译,我们可能会提供更好的答案。GCC 3-4.1的约束仍然相关吗?这里的限制是#error
不能在宏中使用,尽管问题的目的很模糊。我也认为这一点,但是我的GCC(4.9)它不会因为错误而停止,它会继续,显然它不会编译但不会停止,这是一个bug还是你能确认吗?
#pragma GCC error "my message"