假设foo.c包含全局定义int secret = 4;

我在一篇期末考试的评论中得到了这个问题.我有点难过. (这是在
Linux环境下的PuTTy中编译的)

Question: Suppose foo.c contains the global definition int secret = 4;, and bar.c contains the global definition char secret[16];
What will happen when foo.c and bar.c are linked together? How much memory will be reserved for secret?

我的尝试:我认为既然它们都是同名的全局定义,它们都是强变量而且不会编译(即链接器错误),因为你不能有多个强变量.我感到困惑的是多少内存实际上将保留秘密.也许它是微不足道的,它会是(自char为1字节以来的16个字节)整数的4个字节,总共20个字节?

提前致谢

最佳答案 它们是相互冲突的定义,因此它不会链接,因此不会为秘密或其他任何内容保留内存.

点赞