音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

C語言一問,很困惑,請各位朋友指點

作者:珊瑚蟲 欄目:嵌入式系統(tǒng)
C語言一問,很困惑,請各位朋友指點
請問各位朋友:
 
  假設(shè)我在option.h文件中預(yù)定義了一個宏
    #define MCLK (32000000)
   
  請問這個MCLK宏作用范圍是僅限于44b.h文件呢還是在整個工程的所有文件都有效。
  比如,我在uart.c中,有這樣一個函數(shù)
  void Uart_Init(U8 whichUart,U32 baud)
  {
    ...
    ...
    rUBRDIV0 = ( (int)(MCLK/16./baud + 0.5) -1 );
    ...
    }
 那么我在option.h中定義的宏MCLK是不是也會在預(yù)編譯時將MCLK替換為32000000.
 總覺得不太對勁,是不是要自己另外定義一個全局變量MCLK,用于作用在Uart_Init中的MCLK啊?
  不過我沒有另外定義一個全局變量MCLK,編譯連接也能通過,沒有提示找不到MCLK變量,說明還是宏MCLK在起作用。
 不過總覺得有問題。
請各位朋友指點一二,謝謝


2樓: >>參與討論
future_god
不大清楚, 我也遇到了這個問題
 
3樓: >>參與討論
computer00
如果你在uart.c文件中,未包含option.h文件,則編譯通不過
在哪個文件里使用,就要在哪include

4樓: >>參與討論
dable_hn
包含option.h的*.c文件范圍內(nèi),都有效,其他無效。
 
5樓: >>參與討論
赤鑄
你的困惑讓人很困惑
宏定義就是簡單的符號替換,怎么跟變量扯上關(guān)系了?
有了前面的宏定義
rUBRDIV0 = ( (int)(MCLK/16./baud + 0.5) -1 );
就被替換成了
rUBRDIV0 = ( (int)((32000000)/16./baud + 0.5) -1 );

難道你的意思是程序不能直接寫32000000這樣的數(shù)值,而是非得用變量?

6樓: >>參與討論
akai2002
要認(rèn)真看書!
1句話: 要include .h文件

7樓: >>參與討論
最愛韶涵
如果作用范圍是僅限于44b.h文件,那么用#ifndef還有什么意義?
 
8樓: >>參與討論
qjy_dali
那就看你的文件把含MCLK的那個文件包含了沒有
 
9樓: >>參與討論
lijunf25
這兒有不少相關(guān)資料
http://www.cediy.com/bbs/X_AdvCom_Get.asp?UserID=1891

10樓: >>參與討論
cooldex
有意義
如果作用范圍是僅限于44b.h文件,那么用#ifndef還有什么意義?

有意義,要想用MCLK至少要include一次,#ifndef可以避免多次被include,這在很多include文件時很容易發(fā)生

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
個人學(xué)習(xí),求nucleus源碼
有沒有和LTC2950功能類似的電源開/關(guān)控制IC?
哪里能買到CSB655?
vxworks啟動問題
用不用內(nèi)存管理到底有什么區(qū)別?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號