嵌入式软件工程师&&太极拳
全部博文(548)
分类: LINUX
2011-03-14 21:14:19
/*试举一个例子:
如果想编写一个既可用 TC 编译又可用 VC 编译的程序,但不同的编译器生成的可执行文件的功能不同时, #ifdef 就有用了.
下面这个程序,如果用 VC 编译,只会显示一句话; 但若用 TC 编译,既显示一句话,又把背景颜色改为蓝色。
这样做的原因是 VC 没有 textbackground() 这个函数, 为了不改变源程序而适应不同的编译器, 这种条件编译(conditional compilation)的方法比较有用.
另外,有些 Windows API 对操作系统的版本有要求,这时条件编译又可派上用场了.
*/
#include
#include
#ifdef WIN32 /*使用 Visual C++ 6.0 作为编译器时, "WIN32 " 自动被VC定义,*/
#define VC /*从而定义了 "VC "*/
#endif
int main(void)
{
#ifdef VC /*如果 VC 被定义, 执行下面的代码*/
printf( "This program was compiled by VC 6.0\n ");
#else /*否则(即 VC 未被定义), 执行下面的代码*/
/*使用 Turbo C 作为编译器时执行*/
textbackground(BLUE); /*背景颜色改为蓝色*/
clrscr();
printf( "This program was not compiled by VC 6.0\n ");
#endif /*#ifdef VC*/
/*不论用何编译器, 以下代码都会被编译*/
printf( "Hello, world ");
getch();
return 0;
}