gpt4 book ai didi

gcc - msvc 和 gcc 上的用户警告?

转载 作者:太空狗 更新时间:2023-10-29 15:42:22 26 4
gpt4 key购买 nike

在 MSVC 中,我在标题中有这个:

#define STR(x)          #x
#define STR2(x) STR(x)
#define NOTE(text) message (__FILE__ "(" STR2(__LINE__) ") : -NOTE- " #text)
#define noteMacro(text) message (__FILE__ "(" STR2(__LINE__) ") : " STR2(text))

我也是

#pragma NOTE(my warning here)

海湾合作委员会有:

#warning(my warning here)

但是 MSVC (2003) 在看到 #warning 并给出“fatal error C1021: invalid preprocessor command 'warning'”时抛出异常

我该怎么办?有没有办法让 GCC 识别 MSVC 警告或 MSVC 不对 GCC 警告抛出错误?有什么我可以做的对两者都有效的事情吗?我可以让 GCC 警告我未知的编译指示,但这不是最理想的解决方案。

最佳答案

我找到的针对此问题的最佳解决方案是在通用 header 中包含以下内容:

// compiler_warning.h
#define STRINGISE_IMPL(x) #x
#define STRINGISE(x) STRINGISE_IMPL(x)

// Use: #pragma message WARN("My message")
#if _MSC_VER
# define FILE_LINE_LINK __FILE__ "(" STRINGISE(__LINE__) ") : "
# define WARN(exp) (FILE_LINE_LINK "WARNING: " exp)
#else//__GNUC__ - may need other defines for different compilers
# define WARN(exp) ("WARNING: " exp)
#endif

然后使用

#pragma message WARN("your warning message here")

贯穿整个代码而不是#warning

在 MSVC 下,您会收到如下消息:

c:\programming\some_file.cpp(3) : WARNING: your warning message here

在 gcc 下你会得到:

c:\programming\some_file.cpp:25: note: #pragma message: WARNING: your warning message here

不完美,但合理的折衷。

关于gcc - msvc 和 gcc 上的用户警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2740684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com