C++-不赞成在第三方标头中从字符串常量转换为“char*”
C++ - deprecated conversion from string constant to ‘char*’ in 3rd-party header
我在.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
相关文章:
- 是否应避免从非常量迭代器转换为常量迭代器?
- 是否有内置方法可以强制转换为不同的基础类型,但保留常量限定符?
- 为什么我收到"从常量指针到指针的转换无效?
- 从'size_t'转换为"常量双倍",可能会丢失数据
- 在编译时将常量字符* 转换为常量 char_type*
- 为什么下面带有非常量转换函数的代码没有歧义?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 字符串强制转换为常量字符*
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 将错误作为从字符串常量到"char*"的已弃用转换 [-Wwrite-strings]
- 将编译时常量向量转换为堆分配版本
- 在<uint8_t> <char> c++ 中将常量向量转换为常量向量
- 在不同类型之间转换常量指针
- 转换(常量字符*)变量出错
- C++大小写中的类型转换常量字符串
- 转换常量无符号字符无效
- 转换常量表达式定义的说明
- c++ 11强制转换常量迭代器,指向shared_ptr对象的容器
- 条件运算符+上转换+常量引用
- c++限定转换-常量和模板