MiniGUI入口宏函数的详细展开

本文详细解析了MiniGUI中使用宏定义实现入口函数 MiniGUIMain 的方式。通过宏展开,将调用部分的 MiniGUIMain 分解并与宏定义结合,实现了MiniGUIAppMain的声明和main函数的包装。关键在于宏定义如何与调用部分的参数和函数体结合,形成完整的函数声明和实现。
摘要由CSDN通过智能技术生成

今天在网上看一篇MiniGUI入口函数的讲解,原文地址,其中讲到了用宏进行的替换,看了一下,没打看明白,后来在同事“编程小王子”的解释下,明白了其中的技巧。

先贴简化版的实例代码:

 // 宏定义部分
 #define MiniGUIMain \
 MiniGUIAppMain (int args, const char* argv[]); \
  int main (int args,const char* argv[]) \
  { \
      int iRet = 0; \
      printf("haha,args is %d.\n",args);\
      iRet = MiniGUIAppMain (args,argv); \
      return iRet; \
  } \
  int MiniGUIAppMain
  
  
  // 调用部分
  int MiniGUIMain(int argc, const char* argv[]){
      printf("[ha111111111111]\n");
      return 0;
  }

具体展开:
调用部分的”MiniGUIMain“用上面的一个大的宏定义进行替换,其中调用部分”int MiniGUIMain(int argc, const char* argv[])“的前半块”int MiniGUIMain“在宏定义的前面结合,效果就是声明了一个函数MiniGUIAppMain以及对main函数的调用,”(int argc, const char* argv[])“部分在宏定义的后面结合,也就是“int MiniGUIAppMain”后面,效果就是实现了对前面声明函数“int MiniGUIAppMain (int args, const char* argv[]);”的函数定义。

完全展开效果就是:

  int MiniGUIAppMain(int args, const char *argv[]);
  int main(int args, const char *argv[])
  {
      int iRet = 0;
      printf("haha,args is %d.\n", args);
      iRet = MiniGUIAppMain(args, argv);
      return iRet;
  }
  int MiniGUIAppMain(int argc, const char *argv[])
  {
      printf("[ha111111111111]\n");
      return 0;
  }

这个地方理解的关键就是调用部分,分开和宏定义结合,参数及之后部分是放在宏定义的后面进行结合的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值