女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

請問頭文件能不能定義變量呢?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-04-28 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

頭文件里面能不能定義變量?

最近在編譯一個工程的時候,突然遇到了變量重復定義的問題,根據提示打開這幾個 C 文件,并沒有發現定義變量的地方。后來再找一找,原來變量定義在了頭文件里面。

結論就是,頭文件里面可以定義變量,但是最好不要定義。

寫個 demo 看一下。頭文件里面定義變量 num,1.c包含頭文件,并且輸出 num 的值。2.c也包含頭文件,同樣也輸出 num 的值。代碼結構很簡單。

再寫個 Makefile,方便看到編譯的步驟。

執行 make 的時候,從 1.c 變成 1.o 沒有問題,2.c 變成 2.o 也沒有問題,但是最后一步鏈接的時候,提示 num 重復定義。

為什么會這樣。我們知道編譯的第一步是預處理,所有的頭文件都會被展開,比如 1.c ,預處理后變成了這樣,num 的定義直接被搬到了 C 文件里面。同理,2.c 被預處理后,里面也多了個 num 的定義。所以最后一步鏈接的時候,編譯器就提示 num 重復定義。

解決這個問題方法有很多,比如定義 num 的時候,加上 static,限制它的作用域,或者干脆不要在頭文件里面定義變量,把它放到源文件中,如果其他文件需要訪問,用 extern 聲明一下。

頭文件里面定義變量也跟編譯器有關,同樣的代碼,換個編譯器,鏈接的時候竟然沒有問題。最后,還是建議大家,最好不要在頭文件里面定義變量和函數。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 變量
    +關注

    關注

    0

    文章

    614

    瀏覽量

    28947
  • 頭文件
    +關注

    關注

    0

    文章

    26

    瀏覽量

    10116

原文標題:頭文件能不能定義變量?

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    C語言中結構體能不能相加

    C語言中,結構體能不能相加?
    的頭像 發表于 12-19 17:04 ?1653次閱讀
    C語言中結構體<b class='flag-5'>能不能</b>相加

    PIC單片機能不能把IO口定義成一個變量

    PIC單片機能不能把IO口定義成一個變量,比如我要位操作RA0口,我在程序中用一個變量X來代替RA0,接下來程序中我只要修改X的值就能改變RA0口的輸出狀態.我用的是PICC編義器,我
    發表于 02-01 17:49

    共享變量能不能實現這種功能

    各位大神好,請問用labview能不能實現這樣一種功能,在前面板中的按鈕控制某一VI的運行,這一個VI的運行結果又返回到主VI,不知道用共享變量能不能實現。描述的不夠清楚,勿怪,謝謝。
    發表于 12-30 09:52

    急求atmega128可定義變量類型,主要是看能不能定義32位的變量

    急求atmega128可定義變量類型,主要是看能不能定義32位的變量
    發表于 05-17 10:46

    請問哪個系列的DSP的 C∕C++ 頭文件和外設示例有PID控制的例程

    最近在做一個數字電源,需要用到PID控制輸出電壓的穩定。請問哪一個型號的DSP的C∕C++ 頭文件和外設示例有PID控制程序?謝謝了。我在28XX系列的例程里面沒有找到PID的例程。要是沒有,能不能上傳一份例程
    發表于 05-14 04:46

    頭文件定義全局變量的方法

      教大家一個如何在頭文件定義全局變量的方法  通常情況下,都是在C文件定義全局變量,在
    發表于 07-04 08:34

    頭文件定義全局變量的方法介紹

      教大家一個如何在頭文件定義全局變量的方法  通常情況下,都是在C文件定義全局變量,在
    發表于 07-09 09:25

    電池能不能修復?

    電池能不能修復? 電池修復作為一個新生事物,許多人對它不了解,也有許多人對它一知半解。那么電池到底能不能修復
    發表于 11-23 10:40 ?1220次閱讀

    教大家一個如何在頭文件定義全局變量的方法

    通常情況下,都是在C文件定義全局變量,在頭文件中聲明,但是,如果我們定義的全局變量需要被很多的
    發表于 12-04 14:55 ?19次下載

    諧波治理到底能不能節電

    諧波治理到底能不能節電?”這是我們做電能質量行業經常會被問到的一個問題。隨著國家對節能減排項目的大力支持,有不少商業人士一擁而上加入到節能行業,想要分得節能市場的一杯羹。那么,通過諧波治理到底能不能實現節能的效果
    發表于 04-23 15:50 ?3927次閱讀

    MCU_頭文件編寫

    頭文件中一般放一些重復使用的代碼,如:常量、變量、宏等的定義,函數的聲明。當使用#include語句引用頭頭文件時,相當于將頭文件中的內容復
    發表于 12-05 10:36 ?5次下載
    MCU_<b class='flag-5'>頭文件</b>編寫

    大型輥壓機軸磨損能不能現場維修?

    大型輥壓機軸磨損能不能現場維修?
    發表于 06-23 15:35 ?1次下載

    指針能不能作為循環變量

    指針能不能作為循環變量
    的頭像 發表于 02-16 18:11 ?1298次閱讀

    物聯網流量卡到底能不能用?

    物聯網流量卡到底能不能用?
    的頭像 發表于 08-28 09:40 ?7357次閱讀
    物聯網流量卡到底<b class='flag-5'>能不能</b>用?

    C語言中的頭文件能不能重復包含

    C語言中的頭文件能不能重復包含? 比如代碼寫成這樣,stdio.h 連續包含了兩次。 #include #include int main(){ printf("helloworld
    的頭像 發表于 11-26 17:19 ?601次閱讀