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中的驅動機制就是基於訊號和槽的繫結 具體步驟就是,選中乙個控制項 右鍵 轉到槽...