You simplified f() until it did nothing but call another function. It took no parameters, returned
nothing, and had no local variables. It was useless.
"telnet2008" <telnet2008@gmail.com> wrote in message news:OgsycQGZHHA.2552@TK2MSFTNGP06.phx.gbl...
Thankx,Brennecke.
you answer my first question: cannot find func,func1 in the disassemble
output file.
But how to explain f()?
waiting..........
"Scot T Brennecke" <ScotB@MVPs.spamhater.org> ????????????
:#tQdALGZHHA.1008@TK2MSFTNGP03.phx.gbl...
Optimization. If you simplify the function enough, or don't call it, it
doesn't need to exist, so
it is excluded to reduce the size of the executable.
"telnet2008" <telnet2008@gmail.com> wrote in message
news:enpfszFZHHA.2436@TK2MSFTNGP06.phx.gbl...
Hi,everyone:
the questionly code:
#include <iostream>
using namespace std;
class test
{
int x;
void func()
{
};
void func1()
{
x = 1;
};
public:
void f()
{
printf("%x\n",&x);
printf("%x\n",&test::func );
printf("%x\n",&test::func1 );
};
};
int main()
{
test a;
a.f();
test * ap = &a;
void(test::*pmem)(void)=&test::f;
printf("%x\n",pmem );
test b;
b.f();
test * bp = &b;
return 0;
}
if delete this 2 statements: printf("%x\n",&test::func );
printf("%x\n",&test::func1 );
in vs2003-release,in export map file and disassemble output
file(dumpbin),
cannot find the location of "func()"??"func1()".
if delete this 3 statements: test * ap = &a;
void(test::*pmem)(void)=&test::f;
printf("%x\n",pmem );
test b;
in vs2003-release,in export map file and disassemble output file, cannot
find the location of "f()".
why?
if I define test::f() out of the class test, like this:
class test
{
int x;
void func()
{
};
void func1()
{
x = 1;
};
public:
void f();
};
void test::f()
{
printf("%x\n",&x);
//printf("%x\n",&test::func );
//printf("%x\n",&test::func1 );
};
I also cannot find the location of "f()" in the output disassemble file
,why?