原帖由 cjaizss 于 2009-12-30 14:16 发表
其实我想问的问题一共有四个:
第一,为什么可以链接通过.
第二,为什么链接的时候连个warning都没有.
第三,为什么第一个test可以打出来.
第四,为什么第二个就崩了.
原帖由 cjaizss 于 2009-12-30 14:16 发表
其实我想问的问题一共有四个:
第一,为什么可以链接通过.
第二,为什么链接的时候连个warning都没有.
第三,为什么第一个test可以打出来.
第四,为什么第二个就崩了.
原帖由 cjaizss 于 2009-12-30 14:18 发表
再引申一个吧,你可以设想出一种编译(广义的,不分编译/汇编/链接过程)的途径让它这里产生一个错误吗?
也就是说,如果你是当初设计C语言编译器的那个人,呵呵
我用如下代码测试
/*1.c*/
#include
char s[]="test\n";
void func()
{
printf(s);
}
/2. ...
cjaizss 发表于 2009-12-29 18:35
原因在于 1.c 和 2.c 中 s 的类型是不一样的。在 1.c 中, s 是字符串"test\n"的起始地址。 func 调用 pri ...
jzhang918 发表于 2009-12-29 21:37
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |