学MFC遇到的几个小问题,新手上路多关照

学MFC遇到的几个问题,新手上路多关照
问题1:   !defined什么意思?有何作用?
#if   !defined   (_DATATYPE_H)
#define   _DATATYPE_H
..........
#endif

问题2:参数代表什么意思?
int   AppMsgBox   (
        HWND                                         hwnd,
        UINT                                         fuStyle,
        PTSTR                                     pszFormat,
        ...  
)
问题3:

swap(int   *p1,int   *p2)
{
  int   temp;
  temp   =   *p1;
  *p1   =   *p2;
  *p2   =   temp;
}
上面函数意思是交换两个数,为什么要定义个temp,如果*p1=*p2;*p2=*p1;有什么问题,和上面定义临时变量有什么区别?

------解决方案--------------------
问题3:

swap(int *p1,int *p2)
{
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
如果*p1=*p2;*p2=*p1;不使用临时变量,像你说得这么用的话,p2指向的内容赋给p1所指向的空间了,p1指的内容被覆盖了,没了。没办法交换了。
------解决方案--------------------
int AppMsgBox (
HWND hwnd,
UINT fuStyle,
PTSTR pszFormat,
...
)
第一个代表窗口的句柄,父窗口的Handle,第二个估计是传对话框显示的样式,比如显示是否,取消,以及图标样式,第三个估计是显示的字符串的内容
第一个是为了防止重复包含头文件