.h檔案可以宣告巨集定義模版函式:(在其它檔案中只要包含了該.h檔案,就可以使用這些函式)
#define convert_declare(suffix,t,filename) /
(extern) void suffix_##filename(const scalar* s, t* buf, int cn, int unroll_to);
convert_declare(convertto,uchar); //宣告了convertto_uchar(const scalar* s, uchar* buf, int cn, int unroll_to)函式
convert_declare(convertto,schar); //宣告了convertto_schar(const scalar* s, schar* buf, int cn, int unroll_to)函式
convert_declare(convertto,ushort); //...........
convert_declare(convertto,short);
convert_declare(convertto,int);
convert_declare(convertto,float);
convert_declare(convertto,double);
.c檔案需要實現上述函式:
#define convert_implement(suffix,t,filename) /
void suffix_##filename(const scalar* s, t* buf, int cn, int unroll_to) /
convert_implement(convertto,uchar); //實現了convertto_uchar(const scalar* s, uchar* buf, int cn, int unroll_to)函式
convert_implement(convertto,schar); //實現了convertto_schar(const scalar* s, schar* buf, int cn, int unroll_to)函式
convert_implement(convertto,ushort);
convert_implement(convertto,short);
convert_implement(convertto,int);
convert_implement(convertto,float);
convert_implement(convertto,double);
//呼叫
convertto_uchar( s, buf, cn, unroll_to);
convertto_schar( s, buf, cn, unroll_to);
..............
例項:
.h檔案
#define size_struct(tp) /
typedef struct size_##tp /
size_##tp;
size_struct(int);
//size_struct(char);
#define size_construct_declare(_tp) /
size_##_tp size_##_tp##_construct(_tp _width, _tp _height);
size_construct_declare(int); //size_int_construct(int _width, int _height);
.c檔案
#include "test.h"
#define size_construct_implement(_tp) /
size_##_tp size_##_tp##_construct(_tp _width, _tp _height) /
size_construct_implement(int); //size_int size_int_construct(int _width, int _height);
void main()
C語言實現模版
c語言有兩把雙刃劍,一把是 指標 另一把是 巨集 這回咱就用 巨集 來實現c 中才有的模版。這裡的模版實現乙個很簡單的加法函式,同乙個函式 可以處理不同型別的加法運算。c 的實現 template t add t a,t b include int main int argc,const char ...
C 語言 巨集定義和巨集函式
在軟體開發過程中,經常有一些常用或者通用的功能或者 段,這些功能既可以寫成函式,也可以封裝成為巨集定義。那麼究竟是用函式好,還是巨集定義好?這就要求我們對二者進行合理的取捨。我們來看乙個例子,比較兩個數或者表示式大小,首先我們把它寫成巨集定義 define max a,b a b a b 其次,把它...
C語言基礎 巨集函式
函式式巨集 巨集函式 和函式模擬會更加靈活,我們通過兩個例子來看一下。函式 include intsqr int int x double sqr double double x intmain int argc char ar 函式式巨集 include define sqr x x x intm...