- 主题:请教一个char*的问题
最近在将一个C的库转成C++,发现一个问题,在C的库里这段代码能正常工作,如果sourcefile_name没有赋值能够进入到if里:
char sourcefile_name[MAX_FULLPATH_LENGTH] = { 0 };
xxxxx
if (!sourcefile_name){
printf("No source file.\r\n");
return -1;
}
同样这段代码放到C++的编译器里(g++ 4.8.5)编译后就不赋值也进不去,看了文档发现C++编译器认为‘sourcefile_name’的地址总是等价为‘true’,想请教一下这段代码怎么改才能在C++环境里正常工作呢?想过通过sourcefile_name[0]=='\0'来判断,但是这样感觉容易段错误。。。
///////////////
补充一下,因为要二进制落盘,所以还得用char数组来存这个字符串,不用string,所以才会有这样的需求
--
修改:zhongxue FROM 103.216.43.*
FROM 103.216.43.*
感谢回复。
老的C的库里写的是 if (!sourcefile_name),
我之前提过通过sourcefile_name[0]来判断,但是组里面的其他人不同意,说是有可能会造成段错误导致程序崩溃
【 在 hgoldfish 的大作中提到: 】
: 这个地方,c 和 c++ 的语义不是一样的吗?
: 都要写
: if (!sourcefile_name[0]) {
: ...................
--
FROM 103.216.43.*
收到,多谢多谢。
【 在 hgoldfish 的大作中提到: 】
: 这不扯蛋么。。你有初始化,哪来的段错误。不然这样:
: if (!sourcefile_name || !sourcefile_name[0]) {
: ...
: ...................
--
FROM 103.216.43.*
感谢大家的回复,我们组里都是实习生,资格最老的有半年左右的C++经验,我自己也是一边学一边做个练手的项目,能力自然不能跟各位大佬比啊
--
修改:zhongxue FROM 103.216.43.*
FROM 103.216.43.*