亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2178 | 回復(fù): 5
打印 上一主題 下一主題

關(guān)于項(xiàng)目中全局變量的疑問,不解啊 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-10-27 13:32 |只看該作者 |倒序?yàn)g覽
項(xiàng)目有4個c程序,2個h頭文件。
a.c內(nèi)容是

  1. #include "ee.h"
  2. #include "ff.h"
  3. int fun_a(int a)
  4. {
  5.    return a;
  6. }
復(fù)制代碼
b.c內(nèi)容

  1. #include "ee.h"
  2. #include "ff.h"
  3. int fun_b(int a)
  4. {
  5.    return a;
  6. }
復(fù)制代碼
cc.c內(nèi)容

  1. #include "ff.h"
  2. int dd;
復(fù)制代碼
aa.c是主程序

  1. #include <stdio.h>
  2. #include "ee.h"
  3. int main()
  4. {
  5.    dd =0;
  6.    fun_a(10);
  7.    fun_b(10);
  8.    printf("hell\n");
  9. }
復(fù)制代碼
ee.h是

  1. int fun_a(int a);
  2. int fun_b(int b);
  3. extern int dd;
復(fù)制代碼
ff.h是

  1. extern int dd;
復(fù)制代碼
編譯順序是
g++ -c a.c b.c cc.c
ar rv libb.a b.o cc.o
ar rv liba.a a.o cc.o
g++ -o aa aa.c -L. -la -lb,則不報錯
如果取消cc.c改為把int dd放在頭文件里,則報dd重復(fù)定義。重復(fù)定義我理解原因。但是不明白為什么兩個.a里都有dd的定義,而不報錯?

論壇徽章:
0
2 [報告]
發(fā)表于 2010-10-27 16:53 |只看該作者
我想應(yīng)該是你在:
ar rv libb.a b.o cc.o
ar rv liba.a a.o cc.o
的時候,生成的兩個*.a里面都有了定義了,并且你ar的時候是單獨(dú)的...所以...

論壇徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龍
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥豬
日期:2014-04-01 08:56:02亥豬
日期:2014-04-08 08:38:58程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-01-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-01-07 06:20:00
3 [報告]
發(fā)表于 2010-10-27 16:56 |只看該作者
lz手工敲gcc?

論壇徽章:
0
4 [報告]
發(fā)表于 2010-10-27 17:08 |只看該作者
預(yù)處理的時候,把ee.h都展開,就出現(xiàn)了2個int dd了。
另外,你的班上有個人叫張三,隔壁班也有個張三,這是完全沒有問題的。
兩個班突然要合并,就出問題了。2個張三搞不清楚了。

論壇徽章:
0
5 [報告]
發(fā)表于 2010-10-27 18:52 |只看該作者
樓上的,樓主應(yīng)該是問問什么link里面包含了兩個cc.o 卻不報重復(fù)定義

查了下文檔:
The linker handles an archive file by scanning through it for members which define symbols that have so far been referenced but not defined.

http://gcc.gnu.org/onlinedocs/gc ... s.html#Link-Options

猜測是因?yàn)榇煮w字部分, 掃描archive file時只掃描還未被定義的符號,先掃描liba.a, 發(fā)現(xiàn)了int dd, libb.a里面的cc.o就不掃描了。 不知道對不對

論壇徽章:
0
6 [報告]
發(fā)表于 2010-10-28 14:08 |只看該作者
回復(fù) 5# donotblock


    應(yīng)該是這樣理解,才能通!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP