网页网站建设难吗,好的平面设计,网页设计效果图及代码,网站建设php文件放哪里时间有限#xff0c;简要记录原理。 快速回忆要点#xff1a;
#if definde(FEATURE_A)
#define myfunc _myfunc
#endif
int myfunc(int a, int b) 场景#xff1a; 假设某个功能函数针对不同的makefile配置需要有不同的函数名字#xff0c;通常做法如下#xff1a;
#if …时间有限简要记录原理。 快速回忆要点
#if definde(FEATURE_A)
#define myfunc _myfunc
#endif
int myfunc(int a, int b) 场景 假设某个功能函数针对不同的makefile配置需要有不同的函数名字通常做法如下
#if definde(FEATURE_A)
int myfunc(int a, int b)
#else
int _myfunc(int a, int b)
#endif
{
...
return 0;
}奇技淫巧的做法是灵活利用C语言编译预处理在预处理阶段就进行了替换从而避免了某个函数各种名字的方式不过这种类型仅限于微改变函数参数仅仅改变函数名字的场景。
#if definde(FEATURE_A)
#define myfunc _myfunc
#endif
int myfunc(int a, int b) {
...
return 0;
}上面的代码有点绕要动态的来看在编译预处理阶段将myfunc函数替换为_myfunc那么通过-i参数假设看生成的预处理后的文件就会看到只有_myfunc没有myfunc了。然后编译就只剩下_myfunc函数名字了但是代码里面却可以依旧使用myfunc
什么场景需要用的这种工程方式呢比如在内核模块中需要和其他模块避免相同的函数名字什么场景有这种需求呢比如内核有个kunit模块然后我们自己实现了一个kunit接口类似的模块如果内核加载了这个模块自己的模块就需要都把函数替换一遍优雅地做法就是上面的方式。
结论
灵活使用编译流程尤其是宏定义有很多帮助掌握底层逻辑尤其是一些元操作能够对一些工程问题有一些不错的解决方式优雅的做事