能力值:
( LV2,RANK:10 )
|
-
-
2 楼
后面不带圆括号的函数名就是地址啊,如果函数名后面紧跟着圆括号就是函数调用了
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
我的意思是同名函数:
int Add(int a, int b)
float Add(float a, float b)
这2个函数写在一起,请你取第二个函数的地址
|
能力值:
( LV12,RANK:340 )
|
-
-
4 楼
这个问题还真没考虑过0.0
要不整个命名空间?
|
能力值:
( LV6,RANK:90 )
|
-
-
5 楼
你太蠢了 你导出一下 用工具查看一下 不就出来了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
搜索“C++名称修饰”。
但不同的编译器,甚至同一个编译器的不同版本的修饰方法都一定是相同的,所以导出C++接口的建议使用COM方式。
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
用函数指针
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
我真不认为你这是啥好办法
为啥你调用 函数时不也这么做呢?不嫌累?
|
能力值:
( LV9,RANK:200 )
|
-
-
9 楼
printf("%p\r\n", (int(*)(int,int))Add);
printf("%p\r\n", (float(*)(float,float))Add);
|
能力值:
( LV7,RANK:100 )
|
-
-
10 楼
aaaa
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
貌似这才是真正的正确方法,谢谢
|
能力值:
( LV6,RANK:90 )
|
-
-
12 楼
晕死 我是要告诉你 你的函数 在编译器眼里是什么样形式,编译器是怎么区分的,所以 让你自己导出 看看
|
能力值:
( LV3,RANK:30 )
|
-
-
13 楼
你所谓的“函数名相同”,那也只是你的眼睛看到是相同的而已。
C++来说,那些在你看来名字完全相同的函数,编译好后,会是不同的名字
你的
int a(int param0,char parapm1);
void a(void*);
在C++里编译时,真实名字会被自动改成类似这样:
int $#a@8@43345
void #$a@455@0@54dfdf
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
C++编译名称会杂糅,函数名不可能相的。
|
能力值:
( LV4,RANK:50 )
|
-
-
15 楼
你说的符号我知道一些,但那个太复杂,可用性不高,所以,我只是想看直接在代码里如何找到它嘛,
如果9楼说的是对的,他那样就是我想找的方法
|
能力值:
( LV4,RANK:50 )
|
-
-
16 楼
你说的是编译后的事,我讨论的是代码如何写,这是编译前的事
正如我前面说的,你调用 add的方法,完全不用关心它编译后产生的多么复杂的名称
我只是想找到类似的方法,直接取到它的地址
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
名称改编的嘛。其实对链接器来说,你看到的func1在它那儿多半根本就不是这样
哦,原来你问的是编译前啊,那样的话名字相同就代表参数肯定不同,就是不同的类型,用函数指针呗。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
9楼不是说应该按下面这样写吗?
printf("%p\r\n", (int(*)(int,int))Add);
printf("%p\r\n", (float(*)(float,float))Add);
如果你写的是printf("%p\r\n", Add);
估计编译器会报错,然后你会发现错了,你就会按照上面的方法改写成正确的语法。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
9l的写法不是强制类型转换了吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
如果是导出hint会不同。但Name会相同。INT表已经做出规定。PE内是不会乱的,如果只是单纯的取地址,定义指针函数即可。
|
能力值:
( LV3,RANK:30 )
|
-
-
21 楼
任何代码,在编译之前就不存在一丁点程序意义上的“地址”
你所谓的“编译前的的地址”,只在你的想象中。。。。程序来说,这样的地址是不存在的。
C++所谓的可以函数重名,那也仅仅存在于“没编译前的、人眼看到的”而已
对编译器来说,他们完全就没有任何相同的地方,所以不存在你所谓的“如何能确定究竟是哪个函数”的问题。。。。不同的两个函数当然不会有干扰的地方
|
能力值:
( LV4,RANK:50 )
|
-
-
22 楼
我表示你真的是想多了
我当然知道不同的函数有不同的地址,我重点是要解决在C++这个层面的写法问题
我只是想表明,同名函数不好取址,这个所谓的地址,是通俗意义上的,大家可理解的那个,就像取变量地址一样的
|
|
|