函数在调用之前必须声明啊有木有,忘记了这个就等于忘掉了老本。

LRESULT CALLBACK DlgProc(HWND hDlgMain,UINT uMsg,WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){
    DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG),NULL,(DLGPROC)DlgProc);//(DLGPROC)
    return 0;
}

即使winmain里面的dlgproc调用的时候只有函数名,也必须声明一下啊,否则会出现下面的报错

C:\VC6\MyProjects\PortTest\portmain.cpp(10) : error C2065: 'DlgProc' : undeclared identifier
C:\VC6\MyProjects\PortTest\portmain.cpp(14) : error C2373: 'DlgProc' : redefinition; different type modifiers

还有看到有关__in__这些变量名的,其实就是用了#define __in__ NULL来定义的,就是为了便于理解查看,其实有没有这个真的无所谓。
但是,像下面的这种情况

  • __in__ cout<<"hello"<<endl; 通过
  • NULL cout<<"hello"<<endl; 不能通过
    为什么呢。
    这是因为在define是宏定义,在编译的时候会替换成文本,但是在宏定义结果为null 或者0时,编译预处理的时候会忽略,编译时不存在。所以第一个可以通过,第二个等于说在编译预处理后还有null存在了,因此无法编译通过。

Yang_River
156 声望7 粉丝