我一向主张,对于C语言之类课程,真正端正的学习态度,是实际写一写程序来验证自己的想法是否正确.
最近,我看到有同学提出如下问题:
对于上面这道选择题,我写了个程序,觉得至少能通过运行结果来解释上述的 BCD三个选项是否正确:
源文件名为 strlen_test.c
#include <stdio.h>
#ifdef DEVTOR_STRLEN
int strlen(char *str)
{
printf("自定义函数的返回值");
return 4;
}
#else
#include <string.h>
#endif
int main(void)
{
size_t len = strlen("hello world!\n");
printf("len = %d\n", len);
return 0;
}
该程序需要用两种编译方法来查看不同的运行结果。
第一种编译方法,生成可执行程序 strlen_case1.out
gcc -DDEVTOR_STRLEN -o strlen_case1.out strlen_test.c
第二种编译方法,生成可执行程序 strlen_case2.out
gcc -o strlen_case2.out strlen_test.c
然后执行这两个程序,看看运行结果吧。多说无益,运行了自然就明白了。
PS: 该程序目前我只提供了Linux下的编译方法,windows或者其他平台下面的方法,读者有兴趣可以回复一下。