C++-不赞成在第三方标头中从字符串常量转换为“char*”

C++ - deprecated conversion from string constant to ‘char*’ in 3rd-party header

本文关键字:转换 常量 char 字符串 不赞成 第三方 C++-      更新时间:2023-10-16

我在.cpp文件中包含了几个第三方头文件(当然是用extern "C"包装的),在编译过程中,即使我没有调用头文件中定义的函数,我也会收到令人讨厌的deprecated conversion from string constant to ‘char*’警告。既然我不能更改标题,有没有一个好的方法可以让这些警告保持沉默/忽略它们,或者我只能接受它们?

这将取决于您的编译器。以下是您为g++所做的操作:

#pragma GCC diagnostic ignored "-Wwrite-strings"
#include <files that generate the warning>
#pragma GCC diagnostic warning "-Wwrite-strings"

您可以通过使用-Wno-write-strings进行编译来禁用警告。

我假设这就是我们在这里讨论的g++

您的编译器(GCC?)可能支持禁用一系列行或源上的警告。

当然,您还应该向供应商报告错误。

因此,您可以按照以下思路编写一些特定于编译器的内容:

#pragma PUSH COMPILER IGNORE SOME WARNING
#include <third_party_headers.h>
#pragma POP COMPILER IGNORE SOME WARNING