我有以下代码片段,它通过C程序执行脚本。
char upgrd_bb[512] = "";
sprintf(upgrd_bb,"/usr/bin/./\UPGRD_BB_ALL '%s'", path_argv[5]);
if(!(system(upgrd_bb)))
{
dw_flag = 0;
printf("Unable to Upgrade BB ");
}
在交叉编译期间,我收到错误
/home/ubuntu/Documents/FileOper.c:829:14: warning: universal character names are only valid in C++ and C99
/home/ubuntu/Documents/FileOper.c:829:14: error: incomplete universal character name \U
make: *** [/home/ubuntu/Documents/FileOper.o] Error 1
如果我将脚本的名称更改为任何其他字符,则编译正常。任何人都可以专注于此。
提前感谢!!
答案 0 :(得分:2)
在字符串
中"/usr/bin/./\UPGRD_BB_ALL '%s'"
您有序列\U
,它被视为Unicode转义序列。如果删除额外的反斜杠以获取
"/usr/bin/./UPGRD_BB_ALL '%s'"
那么你应该全力以赴。
另一方面,如果您需要名称中的额外反斜杠,请将其转义:
"/usr/bin/./\\UPGRD_BB_ALL '%s'"
希望这有帮助!