【发布时间】:2017-08-11 19:26:47
【问题描述】:
对于一个项目,我将着色器编译为二进制数据,然后将它们转换为头文件,该文件将着色器的字节码声明为 const char 数组。
但是,在编译过程中,我收到以下警告:
"从
int到const char的转换需要缩小范围 转换”。
现在我通常知道为什么会发生这种情况,这是因为编译器认为这些值是 int 类型,而实际上它们被声明为 char 类型。
const char base_ps[]={
0x44,0x58,0x42,0x43,0x12 ... etc
将鼠标悬停在这些值上时IntelliSense 还指出这些值被转换为int。例如,对于索引0 处的值,它会列出(int)0x44。
有什么解决办法吗?显然,我可以明确地将 (char) 放在每个值之前的任何位置,但是我必须在着色器生成中添加一个额外的步骤来解析头文件。
我也不想抑制警告,但我希望将警告视为错误。对此有何建议?
【问题讨论】:
-
如果你使用类似
const char foo[] = "\x44\x58\x42\x43";的东西,你还会收到警告吗? -
另外,
'\x44', '\x58', '\x42', '\x43', '\x12'... -
嗯,这很奇怪。这可能是警告级别吗?我正在使用 CMake 生成我的项目,但我不确定默认警告级别是什么。在这里它不起作用; rextester.com/IIE43940可能是这样声明的?
-
另外@NathanOliver 我没有收到警告。就当声明为 0x..
标签: c++ arrays char constants warnings