初始化QByTearray避免[-wnarrow]
Initialize QByteArray avoiding [-Wnarrowing]
我在一个架构上,默认情况下将char
解释为signed
。
i构造了与QbbyTearray QT5文档中提到的char array
:
const char char_buffer[] = {
0xFF, 0x00, 0x03
};
当我稍后分别致电QByteArray::fromRawData(char_buffer)
QByteArray(char_buffer)
时,编译器将抱怨:
error: narrowing conversion of ‘255’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
(fromRawData()
没有unsigned char *
参数过载)
解决方案:
每当我必须与一个内置功能之一互动时,我都会施放unsigned char *
。
const char uchar_buffer[] = {
0xFF, 0x00, 0x03
};
QByteArray::fromRawData(reinterpret_cast<const char*>(uchar_buffer), sizeof(uchar_buffer))
问题:
我是否监督了任何更轻松/直截了当的解决方案,而无需施放(并保留缩小警告)?
每当与QT函数互动期望char *
时,铸造unsigned char *
的解决方案是可以的。
替代品
使用编译器标志-funsigned-char
使编译器默认使用unsigned char
。
使用.pro:
QMAKE_CXXFLAGS += -funsigned-char
与Cmake:
set( CMAKE_CXX_FLAGS "-funsigned-char")
适当的解决方案
最初的问题是如何初始化char_buffer
。整数文字(例如0xff)来自类型整数。最好首先使用角色文字,例如,
const char char_buffer[] = {
'xFF', 'x00', 'x03'
};
相关文章:
- C++避免重复声明的语法是什么
- 在没有太多条件句的情况下,我如何避免被零除
- 如何重构类层次结构以避免菱形问题
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 以下示例中如何避免代码复制?C++/库达
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 是否应该在模板化代码中完全避免const
- 我应该避免多重实现继承吗
- 为了方便起见,我应该避免公开私有字段变量吗
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 避免在C++中重复子类定义
- "Inverse SFINAE"避免模棱两可的过载
- 如何避免在仅标头库中C++类/变量重定义
- Python 集合.计数器,如何避免重复查找
- 是否应避免从非常量迭代器转换为常量迭代器?
- 避免矢量中的对象切片<Base><shared_ptr>
- 有没有办法在从编译器获取参数时避免预处理器宏?
- 如何避免LED在循环状态变化中闪烁?
- make 命令如何避免重新编译未更改的源文件?
- 初始化QByTearray避免[-wnarrow]