问题描述
当我运行下面的code:
的#include<&stdio.h中GT;INT主(INT ARGC,CHAR *的argv [])
{ INT p值= 0; P = STRCMP(NULL,"富"); 返回0;}
我得到分段错误.回声$? 139.说但是当我运行
的#include<&stdio.h中GT;INT主(INT ARGC,CHAR *的argv [])
{ INT p值= 0; STRCMP(NULL,"富"); 返回0;}
我没有得到任何分段错误.可能有人请扔掉一些轻?
下面是我的gcc信息:
> GCC --version
海湾合作委员会(GCC)3.4.6 20060404(红帽3.4.6-8)
解决方案
您可能正在使用的优化选项编译时.由于的strcmp()在第二个片段,结果被忽略编译器消除了这一函数调用,这就是为什么你的程序不会崩溃.此调用只能因为的strcmp()是一种内在函数,编译器知道这个函数没有任何副作用.被淘汰