C語言巨集實現模版函式

2021-05-23 23:51:04 字數 2200 閱讀 2952

.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...