ANSIC的6个预定义宏(所有编译器必须识别)
ANSIC标准定义了以下6种可供C语言使用的预定义宏:
__LINE__ 在源代码中插入当前源代码行号
__FILE__ 在源代码中插入当前源代码文件名
__DATE__ 在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕
__TIME__ 在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕
__STDC__ 指示系统是否含有服从标准(ANSI-compliant)的头文件(以及可能的C库函数)
__cplusplus
标识符__LINE__和__FILE__通常用来调试程序;标识符__DATE__和__TIME__通常用来在编译后的程序中加入一个时间标志,以区分程序的不同版本;当要求程序严格遵循ANSIC标准时,标识符__STDC__就会被赋值为1;当用C++编译程序编译时,标识符__cplusplus就会被定义。
在你写dll的时候,因为对于C和C++,编译器会有不同的名字解析规则,所以可以这样用
#ifndef __STDC__
extern"C" void function();
#else
void function();
#endif
MFC下:
_DEBUG
支持诊断调试功能,在你的编译器定义了_DEBUG时发生作用;分开debug模式和release模式;如果编译器看到了你定义_DEBUG和没定义,编译的程序是不一样的;在Release 定义的是NDEBUG.
WIN32
故名思议,用来区别不同操作系统(开发环境)。_MAC苹果机,WIN32 PC机
顺便讲一下,windows下开发几个头文件的引用关系。
windows.h:包括大部分的Win32 API函数,以及一些Win32宏。只用sdk一般使用
afxwin.h:会调用windows.h,是MFC编程的途径,只要用到MFC就一定要包含它。包含AfxWin.h之后不需要包含windows.h。如果包含了就要注意顺序。