微型技術部落格001 typedef和巨集

2021-07-28 11:07:49 字數 1554 閱讀 7969

c語言

typedef

語句和巨集的用法:

typedef

只是為了增加可讀性而為識別符號另起的新名稱

(僅僅只是個別名),而

#define

原本在c

中是為了定義常量,到了

c++,

const

、enum

、inline

的出現使它也漸漸成為了起別名的工具。有時很容易搞不清楚與

typedef

兩者到底該用哪個好,如

#define int int

這樣的語句,用

typedef

一樣可以完成,用哪個好呢?我主張用

typedef

,因為在早期的許多

c編譯器中這條語句是非法的,只是現今的編譯器又做了擴充。為了盡可能地相容,一般都遵循

#define定義「

可讀」的常量以及一些巨集語句的任務,而

typedef

則常用來定義關鍵字、冗長的型別的別名。

巨集定義只是簡單的字串代換

(原地擴充套件),而

typedef

則不是原地擴充套件,它的新名字具有一定的封裝性,以致於新命名的識別符號具有更易定義變數的功能。

typedef    (int*)    pint;

以及下面這行

:#define    pint2    int*

差別:pint a,b;

的效果同

int *a; int *b;

表示定義了兩個整型指標變數。 而

pint2 a,b;

的效果同

int *a, b;

表示定義了乙個整型指標變數

a和整型變數b。

typedef語句是在編譯過程中被解析的,而

#define

是在編譯之前的預處理過程中被解析的。

#define

所進行的只是對自定義別名的簡單替換,

而typedef

則要靈活得多。總的來說,

typedef

可以做到

#define

所能做的所有事情,而且可以做得更好。

如果使用c++

語言,怎樣用更好的語法替代巨集?

1. 常量定義

#define num 100

由於巨集是預編譯程式來處理,所以num這個名字不會加入到符號表中,如果出現編譯錯誤時,提示資訊中就不會出現num,而是100,為排除錯誤增加了額外的障礙。

替代方案就是使用const來定義常量,或者使用列舉enum。

const int num = 100;

2. 函式定義

#define

square

(x)  (x*x)

使用inline

函式。inline int square(int

value)

3.型別重定義

#define

dword unsigned int

這種型別重定義完全可以使用 typedef unsigned int dword

來替代。

微型技術報告(1)

不允許動態執行 的能力,eval settimeout和setinterval函式的第乙個引數不能為字串,function建構函式的引數不能為字串。關於小遊戲體積問題,小遊戲的體積不得大於4m,快取不得大於50m。具體解釋為 1.本地的 和資源不得超過4m。2.單個小遊戲專案快取的檔案不能超過50m...

php之微型部落格的建立

一,微型部落格的開發思路 微型部落格的建立,確定無疑我們會用到php和mysql之間的增添刪改查,首先來看一下思維導圖 搭建好計算機裡的apache php 和mysql的聯動功能,開啟phpmyadmin,建立乙個資料庫 phplearn 在這個資料庫裡建立乙個資料表 news 二,開發所需的各個...

windows課程微型技術報告2

qt實現簡單介面 開啟ui檔案,我們就可以再裡面畫我們的控制項,畫好之後,qt會同步幫我們生成乙個叫ui的的類,我們可以通過這個類來引用我們繪製的控制項。我們也可以在ui檔案的設計界面對乙個按鈕或者其他的控制項新增槽 qt中的驅動機制就是基於訊號和槽的繫結 具體步驟就是,選中乙個控制項 右鍵 轉到槽...