media-server-代码解析-语法篇-01
创始人
2024-11-11 04:05:03
0次

media-server/test/test.cpp at master · ireader/media-server · GitHub

#define RE_REGISTER(name, proto, func) static bool b_##name = Reflector::Instance()->registerFun(#name, proto, &func)
  1. #define RE_REGISTER(name, proto, func): 这是宏定义的开始,RE_REGISTER是宏的名称,name、proto和func是参数。name是函数的名称,proto是函数的原型字符串,func是函数的指针。

  2. static bool b_##name: 这行代码定义了一个静态布尔变量,其名称由b_后跟宏参数name的值组成。静态变量的作用域限定在定义它的文件内,且在程序的整个生命周期内只被初始化一次。

  3. Reflector::Instance()->registerFun(#name, proto, &func): 这行代码调用一个名为Reflector的单例类的registerFun方法。Reflector::Instance()获取Reflector类的单例实例。registerFun方法接受三个参数:函数名的字符串表示(由#name生成,#name是预处理器字符串化操作符,将宏参数name转换为字符串)、函数原型字符串proto和函数指针&func。

  4. #name: 这是预处理器的字符串化操作符,它将宏参数name转换为一个字符串字面量。

整个宏的作用是创建一个静态布尔变量,并尝试使用Reflector单例的registerFun方法注册一个函数。如果函数注册成功,registerFun方法将返回true,否则返回false。这个布尔变量b_##name可以用来检查函数是否成功注册。

#define DEF_FUN_VOID2(name, ...) void name ( __VA_ARGS__ ); \     int t_##name(int argc, char const *argv[]){\         name();return 0;\     } \     RE_REGISTER(name, "void " #name "(" #__VA_ARGS__ ")", t_##name)
  1. #define DEF_FUN_VOID2(name, ...): 这是一个宏定义的开始,DEF_FUN_VOID2是宏的名称,name和__VA_ARGS__是参数。name是函数的名称,__VA_ARGS__是预处理器的可变参数宏,用于捕获宏调用时传递的所有其他参数。

  2. void name ( __VA_ARGS__ );: 这行代码定义了一个函数原型,函数名为name,参数列表由__VA_ARGS__确定。

  3. int t_##name(int argc, char const *argv[]){: 这行代码定义了一个测试函数,函数名为t_后跟宏参数name的值。这个测试函数接受命令行参数argc和argv。

  4. name();: 调用之前定义的函数name。

  5. return 0;: 测试函数返回0,表示成功执行。

  6. RE_REGISTER(name, "void " #name "(" #__VA_ARGS__ ")", t_##name): 这行代码调用一个名为RE_REGISTER的宏,用于注册函数。它接受三个参数:函数名name,函数的字符串表示(包括返回类型、函数名和参数列表),以及测试函数的名称。

整个宏的目的是创建一个函数,一个与之对应的测试函数,并将这个函数注册到某个注册表中。

相关内容

热门资讯

每日必看!江岸多玩到底能开挂吗... 每日必看!江岸多玩到底能开挂吗(辅助挂),江岸多玩原来真的有辅助挂讲义1、江岸多玩脚本辅助下载、江岸...
玩家交流!颖河竞技怎么开挂(外... 玩家交流!颖河竞技怎么开挂(外挂),颖河竞技好像是有外挂教材一、颖河竞技游戏安装教程牌型概率发牌机制...
最新通报!皮皮四川麻将软件下载... 最新通报!皮皮四川麻将软件下载(辅助挂),皮皮四川麻将果然有辅助挂模块1、操作简单,无需皮皮四川麻将...
一分钟揭秘!52游戏开挂脚本(... 一分钟揭秘!52游戏开挂脚本(透视挂),52游戏切实有透视挂法子52游戏脚本下载中分为三种模型:52...
一分钟快速了解!堆堆乐开挂破解... 一分钟快速了解!堆堆乐开挂破解(外挂),堆堆乐竟然真的有外挂方针1、下载好堆堆乐正确养号方法之后点击...
重大通报!汇城贵州麻将开挂脚本... 重大通报!汇城贵州麻将开挂脚本(开挂),汇城贵州麻将原来真的有开挂法门1、重大通报!汇城贵州麻将开挂...
盘点一款!七色城透视挂件(外挂... 盘点一款!七色城透视挂件(外挂),七色城切实是真的有外挂经验1、全新机制【七色城ai辅助工具激活码】...
今日头条!多多休闲透视软件下载... 今日头条!多多休闲透视软件下载(外挂),多多休闲确实是真的有外挂攻略1、首先打开多多休闲辅助器下载最...
关于!钱柜麻将真的有透视吗(辅... 关于!钱柜麻将真的有透视吗(辅助器),钱柜麻将一贯是有辅助器练习钱柜麻将能透视中分为三种模型:钱柜麻...
今日焦点!河北家乡棋牌辅助工具... 今日焦点!河北家乡棋牌辅助工具(外挂),河北家乡棋牌果然是有外挂手册小薇(辅助器软件下载)致您一封信...