|
|
本人c语言新人
近期学到了一个叫typeof的关键字,发现挺有意思的 ,似乎可以用于实现类似c++的“模板函数“(我不确定怎么称呼)
由于本人才疏学浅,可能很早以前就有人这么玩了,但我不知道吧
感觉挺实用的,比void*好一点
别问我为啥不用c++,问就是不会
假设定义一个用于交换int型变量的函数add1,可以这么做:
- void exchange1(int* var1, int* var2)
- {
- int var = *var1;
- *var1 = *var2;
- *var2 = var;
- }
复制代码 如果是float的话:
- void exchange2(float* var1, float* var2)
- {
- float var = *var1;
- *var1 = *var2;
- *var2 = var;
- }
复制代码
传统c语言是这么复用代码的:
- void exchange3(void* var1, void* var2, size_t size)
- {
- char var[size];
- memcpy(var, var1, size);
- memcpy(var1, var2, size);
- memcpy(var2, var, size);
- }
复制代码
但其实可以这么操作:
- #define exchange(ret_type, name, var1, var2)\
- void name(typeof(ret_type)* var1, typeof(ret_type)* var2)\
- {\
- typeof(ret_type) var = *var1;\
- *var1 = *var2;\
- *var2 = var;\
- }
- exchange(int, exchange1, var1, var2)
- exchange(float, exchange2, var1, var2)
复制代码
|
|