用巨集模擬C 模板的方法1

2021-07-09 05:37:07 字數 1184 閱讀 6550

/// @file classroomexamples.c

/// @brief 用巨集模擬c++模板的方法1

/**用巨集模擬c++模板

c語言中, 合法函式名或變數名不能帶*, 如果巨集的入參用##連線到函式名或變數名上,

會報錯的, 不支援入參為datatype*的用法.

模板是c++的特性, 用巨集模擬模板是比較恰當的.

因為如果是在c++中做, 直接就用模板了.

模板是直接產生的**, 如果用巨集模擬模板, 也應該用巨集直接生成的**,

模擬的比較貼切.

但是用c++類來模擬模板, 可以解決直接用char*的問題, e.g. add(char*)(2, 3);

用c++來搞, 這是乙個類構造+轉換運算子過載的問題.

e.g. #define add (type)cadd(x, y)

*/#include #include #include #include #include #include // 宣告模板

typedef char* charpt;

#define declare_fun_name_add(type) fnadd##type

#define add(type) declare_fun_name_add(type)

#define declare_add(type)\

type declare_fun_name_add(type)(type n1, type n2)\

// error c2110: cannot add two pointers

// 模板特例 charpt

#define declare_fun_name_add_charpt(type)\

type declare_fun_name_add(type)(type n1, type n2)\

;\ if (null != n1)\

\if (null != n2)\

\return s_szbuf;\

}// 例項化模板

declare_add(int)

declare_add(float)

declare_fun_name_add_charpt(charpt)

int main(int argc, char *argv[ ], char *envp[ ])

C語言的巨集定義怎麼用 巧用C語言巨集定義

例如 中多個地方使用當前時間作為字串,如果不使用巨集定義,中如果有十個地方使用了當前時間這個字串,那麼我每一次編譯 都要修改十個地方,但是如果我使用了巨集定義 define current time 14 30 char time current time printf current time i...

c語言巨集定義的使用方法

在工程規模較小,不是很複雜,與硬體結合緊密,要求移植性的時候,可採用巨集定義簡化程式設計,增強程式可讀性。當巨集作為常量使用時,c程式設計師習慣在名字中只使用大寫字母。但是並沒有如何將用於其他目的的巨集大寫的統一做法。由於巨集 特別是帶引數的巨集 可能是程式中錯誤的 所以一些程式設計師更喜歡使用大寫...

用 C語言模擬買貓的過程

最近在學習c語言,同時也在讀 編碼 這本書,讀著讀著突然有一種想把編碼中的電路實現出來的想法,由於現實世界中缺少材料 大量的電線 開關和燈泡等等 所以產生了用c語言模擬計算機的想法。剛剛用c語言把第10章 邏輯與開關 中的買貓過程的電路用c語言模擬了一下,結果 0,0,1 和書中的完全一樣,以後打算...