我编写了一个映射到共享内存位置的代码,以便第一个程序打开一个共享内存块并在其中存储一些数据。第二个程序读取共享数据。
两个命令行之间的区别是什么:
1
if(argc<2)
{
printf("USAGE:%s text-to-share\n",argv[0]);
}
如果我在没有第二个参数的情况下运行它,这段代码会给我一个分段错误。 但是,当我输入一些数据时,它可以正常工作。
2
if(argc<2)
return printf("USAGE:%s text-to-share\n",argv[0]);
这个符合我的目的。
但我不明白两者之间的区别。 我是新手。对我而言,两者是相同的,因为理想情况下它们应该具有相同的输出。 请帮助!
答案 0 :(得分:3)
这两个显然不相同:
printf("USAGE:%s text-to-share\n",argv[0]); // From example 1
return printf("USAGE:%s text-to-share\n",argv[0]); // From example 2
第二行有第一行没有:return语句。
答案 1 :(得分:1)
为什么第一个语句会给你分段错误,在C语言中你正在执行的程序名称,所以它应该是绝对正常的。我能够正确执行这个测试用例
int main(int argc,char ** argv){
if(argc<2)
{
printf("USAGE:%s text-to-share\n",argv[0]);
}
return 0;
}
输出:
USAGE:./prog text-to-share
除了你在此之前执行的代码中做错了。