这宏是什么意思 求教解决办法
这宏是什么意思 求教
define DECL_DYNCFUN(x) \
{#x,(DWORD*)&x,0,0}
这句是什么意思呢
ATTRIBUTE结构有5个成员
定义结构变量为何只写DECL_DYNCFUN(ObpCreateHandle)就行了
基础不扎实 看代码相当吃力
------解决方案--------------------
使用编译器‘/P’选项,打开'*.i',搜索‘ObpCreateHandle‘,可以看到宏展开后为:
ATTRIBUTE funs[]={{"ObpCreateHandle",(DWORD*)&ObpCreateHandle,0,0}};
也就是 1 项。
------解决方案--------------------
宏就是替换
将DECL_DYNCFUN(x)的位置换成{#x,(DWORD*)&x,0,0}
#x代表将x指代的东西看成字符串
这样
ATTRIBUTE funs[]={DECL_DYNCFUN(ObpCreateHandle)};
就转化为
ATTRIBUTE funs[]={{"ObpCreateHandle",(DWORD*)&ObpCreateHandle,0,0}};
这个式子你就应该明白了吧
声明一个ATTRIBUTE的数组
这个数组的元素个数由后面的赋值语句决定
而赋值语句中只有一个实体
当然由于ATTRIBUTE是结构体
所以为数组赋值的{}中每个实体还要用{}限定一下
不过我觉得这个宏还是有问题
以为结构体重有5个元素
所以后面应该是少了一个0
------解决方案--------------------
后面应该有个0,.但初始化时可以省略(多个),省略的为0.
- C/C++ code
#define DECL_DYNCFUN(x) \ {#x,(DWORD*)&x,0,0} PVOID ObpCreateHandle; ATTRIBUTE funs[]={DECL_DYNCFUN(ObpCreateHandle)}; typedef struct ATTRIBUTE { char FunName[50]; DWORD *FunVar; DWORD FunAddr; DWORD bNeedHook; DWORD delta; }ATTRIBUTE,*PATTRIBUTE;
define DECL_DYNCFUN(x) \
{#x,(DWORD*)&x,0,0}
这句是什么意思呢
ATTRIBUTE结构有5个成员
定义结构变量为何只写DECL_DYNCFUN(ObpCreateHandle)就行了
基础不扎实 看代码相当吃力
------解决方案--------------------
使用编译器‘/P’选项,打开'*.i',搜索‘ObpCreateHandle‘,可以看到宏展开后为:
ATTRIBUTE funs[]={{"ObpCreateHandle",(DWORD*)&ObpCreateHandle,0,0}};
也就是 1 项。
------解决方案--------------------
宏就是替换
将DECL_DYNCFUN(x)的位置换成{#x,(DWORD*)&x,0,0}
#x代表将x指代的东西看成字符串
这样
ATTRIBUTE funs[]={DECL_DYNCFUN(ObpCreateHandle)};
就转化为
ATTRIBUTE funs[]={{"ObpCreateHandle",(DWORD*)&ObpCreateHandle,0,0}};
这个式子你就应该明白了吧
声明一个ATTRIBUTE的数组
这个数组的元素个数由后面的赋值语句决定
而赋值语句中只有一个实体
当然由于ATTRIBUTE是结构体
所以为数组赋值的{}中每个实体还要用{}限定一下
不过我觉得这个宏还是有问题
以为结构体重有5个元素
所以后面应该是少了一个0
------解决方案--------------------
后面应该有个0,.但初始化时可以省略(多个),省略的为0.