vc编译的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 17:05:49
初学c++以下代码我是照书上抄的~~~有几个问题!
///////////////////////////////////////////////////////////////////////

#include <windows.h>
#include <stdio.h>
int WinMai(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
//定义一个字符串
LPSTR szString="windows data type ,string";
//定义一个数组,要大于szString
CHAR lpString[120];
//定义dword数据类型
DWORD dwMax=0xFFFFFFFF;
DWORD dwOne=0x1;
//定义int数据类型
INT iMax=0xFFFFFFFF;
INT iOne=0x1;
//显示字符串
MessageBox(NULL,szString,"LPSTR",MB_OK);
//复制内存,将字符串复制到数组中(包括NUll结束符)
CopyMemory(lpString,szString,lstrlen(szString)+1);
MessageBox(NULL,lpString,"CHAR",MB_OK);
//比较并显示结果
if(dwMax>dwOne)
{
MessageBox(NULL,"dword类型的数据0*FFFFFFFF>0*1","DWORD",MB_OK);
}

WinMain是编写窗口应用程序的入口函数,由操作系统调用。在学习C语言main函数的时候,不是也可以写成这样么:int main(int argc,char* argv[]);不过一般我们写程序的时候都是不需要参数的,就简写成了void mian()了;
WinMain可以看成是mian的升级版,它不但包括了命令行参数,还指出了当前进程和先前进程的句柄。当然,这些不需要知道太多,只要明白必须写成这样就行。
0xFFFFF那个0后面不是乘号,而是一种说明,它说明你所表示数的是十六进制的。比如你写个121,如果你不写成0x121,别人怎么知道你是用十六进制表示的呢。
如果你在工程中使用了CRT函数,而这些函数又需要CRT启动代码,就会出现这种链接错误。默认情况下,Release配置的Preprocessor definitions中定义了_ATL_MIN_CRT,它将CRT启动代码从你的EXE或DLL剔出去了,你可以去除_ATL_MIN_CRT这个预处理符号就可以了,第三个问题参考http://dev.csdn.net/article/12/12676.shtm

第一个问题
Winmain 就是C语言的main 如果你不知道C语言的main的话 就不用问了
第二个问题
0XFFFFFFFF与0xFFFFFFFF等价
第三个问题
subsystem:必须为Windows 里面还有些别的编译选项 比如指定入口函数Winmain

去csdn的社区注册一个问吧,那儿人多而且回答也快些。

http://community.csdn.net/