微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以将 MSVC 配置为在遇到未声明的函数时抛出编译器错误?

如何解决是否可以将 MSVC 配置为在遇到未声明的函数时抛出编译器错误?

我目前正在使用 MSVC 和 Visual Studio。如果编译器遇到一个未声明的函数,它会自动采用它的形式。例如,如果我忘记 #include <assert.h>,它将采用以下形式:

int assert()

然后编译器继续编译并输出很多“无意义的”错误。这使得很难追踪实际问题(即缺少 #include)。

是否可以将编译器配置为在遇到未声明的函数时抛出错误

注意,我在“C”模式下使用 MSVC,其中我的源文件扩展名为“.c”而不是“.cpp”。

解决方法

MSVC 编译器在使用未声明的函数时会发出警告消息(如果项目/文件的警告级别设置为 /W3 或更高)。在您的情况下(使用 assert 而不使用 #include <assert.h>),该消息将是:

警告 C4013:'assert' 未定义;假设 extern 返回 int

但是,如果您希望编译器为此类事件生成错误,您可以:(a) 将“将警告视为错误”设置为“是”(/WX) “属性→C/C++→通用”;或 (b) 仅将特定警告转换为错误,请在相关源文件中使用 #pragma warning(error:nnnn) 指令。

使用以下行:

#pragma warning(error:4013)

以上警告变为:

错误 C4013:'assert' 未定义;假设 extern 返回 int

... 项目将无法构建。

您也可以在“属性 → C/C++ → 高级”中完成后者(仅将特定警告视为错误)并指定相关警告编号的分号分隔列表,或通过添加 /we"4013" (或等效)命令行开关。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。