##的使用
## 是一种分割链接方式,它的作用是先分隔,然后进行强制连接
#define TYPE(type, name) type name##_##type##_type
TYPE(int, a) => int a_int_type
typede struct
{
int nData1;
int nData2;
int nData3;
...
}TData;
#define DEFADDDATA(name, type) \
void Op##_##name(TData a,type data) \
{ \
a.n##name += data; \
}
DEFADDDATA(Data1, int) 展开后为
void Op_Data1(TData a, int data)
{
a.nData1 += data;
}
条件编译
空宏和未定义的宏都展开为空字符串
#include <stdio.h>
#define NUM 10
#define ABCCCC 10
int main(){
#if NUM == 10 || NUM == 20
printf("NUM: %d\n", NUM);
#else
printf("NUM Error\n");
#endif
#if NATIVE_AVX512 == ABCCCC
printf("NATIVE_AVX512 == ON\n");
#else
printf("Not Define NATIVE_AVX512 \n");
#endif
#ifdef NATIVE_AVX512
printf("ifdef NATIVE_AVX512\n");
#else
printf("#else fdef NATIVE_AVX512 \n");
#endif
return 0;
}
NUM: 10
Not Define NATIVE_AVX512
#else fdef NATIVE_AVX512