libev 宏展开】的更多相关文章

想看源码,宏太多,看着累,宏展开,再看,功力时间不够,先放下 放上宏展开后的代码. libev4.20 展开方示为 ./configure 修改makefile文件,字符串 替换CC为 CPP 注意要把基础的CC定义保留 make mv ev.o ev.c mv event.o event.c make clean 修改makefile文件,字符串替换CPP->CC 注意要把基础的CPP定义保留 宏展开后#号注释的代码,可以修改CPP的定义 加个参数 ev.c,event.c 及为展开后的代码…
#include<stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf(,))); 宏h(a) 是g(a),没有#,所以需要进行宏展开 printf(,))); //宏g(a) 有#,所以不展开 ; } 如何展开宏函数的规则:在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏. 万能的stackoverflow http://stackover…
使用Visual Studio 开发c++项目,中遇到项目中宏定义套宏定义,难以阅读源代码的时候. 可在 项目-->右键-->配置属性-->c/c++ -->预处理器 -->预处理到文件,选择 是(/P)   预处理取消显示行号,选择 是(/EP) 然后,在解决方案管理器中选择,需要查看的cpp文件,右键选择 编译. 完成后,在项目文件夹下可以找到对应cpp的 .i 文件…
1: sudo gcc -P -I. -I../instrument/stubs -I../instrument/stubs -I../ -E ctrl_xfer32.cc -o preprocessed.cc…
宏定义中的#,## 1. 宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组     2.记号粘贴操作符(token paste operator): ##            “##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接        实参代入宏文本后,实参之前或之后遇到#或##,实参不再展开                                        ①一个较长的宏定义可以分成若干行,这需要在待续的行末尾加上一个反斜杠符”\” #defin…
在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如:#define pr_debug(fmt,arg...) \printk(KERN_DEBUG fmt,##arg) 用可变参数宏(variadic macros)传递可变参数表你可能很熟悉在函数中使用可变参数表,如: void printf(const char* format, …); 直到最近,可变参数表还是只能应用在真正的函数中,不能使用在宏中. C99编译器标准终于改变了这种局面,它允许你可以定义可变参数宏(variad…
宏中的# 功能是将其后面的宏参数进行字符串化操作(Stringizing operator), 简单说就是在它引用的宏变量的左右各加上一个双引号. #define STRING(x) #x 下面二条语句就等价. char *pChar = "hello"; char *pChar = STRING(hello); 宏中的#@   加单引号(Charizing Operator) #define makechar(x)  #@x char ch = makechar(b);与char c…
首先来个简单版本 /* given a pointer @ptr to the field @member embedded into type (usually * struct) @type, return pointer to the embedding instance of @type. */ #define container_of(ptr, type, member) \ ((type *)(()->member))) 作用:主要用于结构体,给定一个指针ptr指向一个结构体type…
MoreWindows 专注于Windows编程 C,C++宏中#与##的讲解 文中__FILE__与示例1可以参见<使用ANSI C and Microsoft C++中常用的预定义宏> 宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号. 如定义好#define STRING(x) #x之后,下面二条语句就等价. char *pChar = "hello"; char *pCha…
1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operator, the ## operator can be used in the replacement section of a function-like macro.Additionally, it can be used in the replacement section of an object-like macro. The ## operator co…