首页 /  技术专区  /  C 宽屏模式 >

条件编译关键字——#ifdef、#ifndef

1 #ifdef、#ifndef

(1)基本格式

 1)格式

· #ifdef

#ifdef 宏 
...
#endif

#ifdef是以宏存不存在(有没有定义)来判断真假的,如果宏

        存在:真,保留代码

        不存在:假,不保留代码

· #ifndef

#ifndef 宏 
...
#endif

情况刚好与#ifdef相反,如果宏

        不存在:为真,保留代码

        存在:为假,不保留这个代码

2)例子

#define WINDOWS_XP   //这是一个无宏体宏
#ifdef WINDOWS_XP
printf("procedure word needed by windows_xp\n");
#endif
#ifndef LINUX
printf("procedure word needed by Linux\n");
#endif							

疑问:可不可以给#ifdef 指定有宏体的宏?

当然可以,

#define WINDOWS_XP   0

#ifdef WINDOWS_XP
printf("procedure word needed by windows_xp\n");
#endif

这里指定宏体没有太大意义,因为#ifdef和#ifndef是靠判断宏名是否存在来判断真假的。

(2)搭配#else

1)格式

#ifdef 宏  //#ifnedf 宏
...
...
#else
...
...
#endif

二选一。

2)例子

#ifdef WINDOWS_XP  //#ifndef WINDOWS_XP
printf("procedure word needed by Windows_xp\n");
#else
printf("procedure word needed by Linux\n");
#endif

(3)与#elif

错误写法

#ifdef ***
...
#elif #ifdef
...
#endif

这个是错误的写法,#elif #ifdef会导致在一行里面有两个预编译关键字,我们我们前面说过,在每行只能有一个预编译关键字

正确写法:

#ifdef ***
...
#elif 1 // NUM == 100
...
#endif




头像
0/200
图片验证码