一道编译原理题一个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 f

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/15 04:53:56
一道编译原理题一个C程序的三个文件的内容如下:\x05head.h:\x05short int a = 10;\x05file1.c:\x05#include
xSn@~RUպ\zЋ FXr J@E2 ! DEiDbl(v5kV "Dν;3| C]q25k|kkU; VBDl|[搘(CBwt2.Q{<'R@S@p댉GvD9"Qu{:v?' Ph_>rj~NzϹ@B3>" %!,$a't-]'PZ,DYmwnsLo8gOK)1) *DYL $b`4dlyܮB݀GE8n; ek $?-م񸡡n)\7}6U*@!\ѹϢnh½>wҠyI>qc?hO6|,OKCq/6^Z$tAl“}Kmuu48^'WPJp_r. lU뷉e‹rǴp ~MjVvH;MZDw"z &y9n?Z^m

一道编译原理题一个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 f
一道编译原理题
一个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试分析为什么会报这样的错误.

一道编译原理题一个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 f
肯定的,你的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,当然肯定是报这个错误啦