//Macro function with no return value#definePRINT_VERSION()do{\printf("Version: %d\r\n",GET_VERSION());\}while(0)
带返回值的写法
// Macro function with return value#defineGET_VERSION()({\char vr[8]={'\0'};\sscanf(ES_IPPHONE_VERSION,"V%[^.]", vr);\atoi(vr);\})
区别
* 不带返回值的,可以直接使用{}来处理
* 带返回值的,需要使用({})来处理
完整实例
头文件 version_def.h
#ifndef__VERSION_DEF_H__#define__VERSION_DEF_H__#include<stdio.h>#include<stdlib.h>#defineES_IPPHONE_VERSION"V2.5.9"// Macro function with return value#defineGET_VERSION()({\char vr[8]={'\0'};\sscanf(ES_IPPHONE_VERSION,"V%[^.]", vr);\atoi(vr);\})//Macro function with no return value#definePRINT_VERSION()do{\printf("Version: %d\r\n",GET_VERSION());\}while(0)#endif// __VERSION_DEF_H__