使用合泰微控制器做乙個小東西,使用
#define timer_count (30*60*1000)
時,發現結果老是不對,後來想想,是不是資料溢位了,一查果然是這樣。看來是stm32用多了,總以為#define是預設32位資料型別的。改成
#define timer_count (unsigned long)(30*60*1000)
後結果就正常了。隨便想糾正下網上很多帖子的問題,估計他們也沒驗證過。
#define timer_count (30*60*1000)ul //這種寫法編譯根本無法通過
#define timer_count (30*60*1000ul) //
正常#define timer_count 30*60*1000ul //
看起來正常,但是想想如果使用時用100/timer_count會怎麼樣?
最後,真的想吐槽下合泰的ide,真的沒見過做的這麼爛的ide了,可以拿來當反面教材
define 巨集定義 的小問題
這裡說一下define在使用時用出現的一些問題,是我在寫題的時候遇到的。一般情況下都是使用define定義的常數,比如說 define inf 999999999 define inf 0x3f3f3f const int inf 99999999 當然這裡不如const 定義的時候更嚴密,因為co...
define巨集定義中的 ,
1 stringizing 字串化操作符 其作用是 將巨集定義中的傳入引數名轉換成用一對雙引號括起來引數名字串。其只能用於有傳入引數的巨集定義中,且必須置於巨集定義體中的引數名前。如 define example instr printf the input string is t s n inst...
define巨集定義中的 , , ,
巨集只能放在一行,分多行時應用在行尾用 需要是最後乙個字元,最後一行不寫 c c 巨集命令的神奇用法。先看下面三條語句 cpp view plain copy define conn x,y x y define tochar x x define tostring x x 1 連線操作符 x y表...