我正在尝试为相关项目编译eSpeak,但在运行 make 命令后出现此错误。
tr_languages.cpp:201:43: error: narrowing conversion of ‘194’ from
‘int’ to ‘char’ inside { } [-Wnarrowing]
const char string_ordinal[] = {0xc2,0xba,0}; // masculine ordinal
character, UTF-8
^
tr_languages.cpp:201:43: error: narrowing conversion of ‘186’ from
‘int’ to ‘char’ inside { } [-Wnarrowing]
Makefile:102: recipe for target 'tr_languages.o' failed
make: *** [tr_languages.o] Error 1
Run Code Online (Sandbox Code Playgroud)
我搜索了一下,似乎这里的声明
const char string_ordinal[] = {0xc2,0xba,0};
Run Code Online (Sandbox Code Playgroud)
本来应该
const signed char string_ordinal[] = {0xc2,0xba,0};
Run Code Online (Sandbox Code Playgroud)
既然源代码改动很大,有没有其他办法编译成功?
我正在使用 gcc 版本 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)
我在Quora上读到一个答案,我遇到了一些简单的事情:
char* inputString;
printf(inputString);
Run Code Online (Sandbox Code Playgroud)
是一个安全漏洞.
我假设inputString不是简单的未初始化,而是在两个语句之间用一些外部输入初始化.
如何准确,这是一个安全漏洞?
Quora的原始答案在这里:
但它没有为此声明提供额外的背景信息.