一道编译原理题一个C程序的三个文件的内容如下:\x05head.h:\x05short int a = 10;\x05f

问题描述:

一道编译原理题
一个C程序的三个文件的内容如下:
\x05head.h:
\x05short int a = 10;
\x05file1.c:
\x05#include "head.h"
\x05main()
\x05{
\x05}
\x05file2.c:
\x05#include "head.h"
\x05在X86/Linux机器上的编译命令如下:
\x05cc file1.c file2.c
\x05编译结果报错的主要信息如下:
\x05multiple definition of ‘a’
\x05试分析为什么会报这样的错误.
1个回答 分类:综合 2014-12-01

问题解答:

我来补答
肯定的,你的a是多重定义的,原因如下:
源文件在编译时是要先预处理的,file1.c预处理的结果为
#line 1 "对应路径/file1.c"
#line 1 "对应路径/head.h"
short int a = 10;
#line 3 "对应路径/file1.c"
main()
{
}
而file2.c的预处理结果为
#line 1 "对应路径/file2.c"
#line 1 "对应路径/head.h“
short int a = 10;
它俩编译后两者的数据区都有一个类型为short int的变量a,当然肯定是报这个错误啦
 
 
展开全文阅读
剩余:2000
上一页:函数急
也许感兴趣的知识