C語言 #ifndef格式
#ifndef 標識符
程序段1
[#else
程序段2]
#endif
作用:這種格式對代碼段的編譯與第二種格式用法是相反的,如果#ifndef指令后跟著的標識符沒有被#define定義過,那么編譯程序段1,否則編譯程序段2。
【例題】用條件編譯實現(xiàn)加密、解密
對一個字符串實現(xiàn)簡單的加密:所有的小寫字母+3顯示,如果不是小寫字母則不變,對于x、y、z 變成a、b、c,將加密的字符串還原輸出。
用#ifndef實現(xiàn)是加密還是解密。
算法分析:
要想實現(xiàn)解密,可以在函數(shù)之外加宏定義語句:
#define FLAG 0
如果想實現(xiàn)加密,可將該宏定義語句注釋,使之不起作用。 程序代碼如下:
#include <stdio.h>
#define N 100
//#define FLAG 0
void main()
{
char s [100];
int i;
printf("input a string:\n");
gets (s);
#ifndef FLAG
for(i=0;s[i]!=0;i++)
{
if(s[i]=='x')
s[i]='a';
else if(s[i]=='y')
s[i]='b';
else if(s[i]=='z')
s[i]='c';
else
s[i]=s[i]+3;
}
#else
for(i=0;s[i]!=0;i++)
{
if(s[i]=='a')
s[i]='x';
else if(s[i]=='b')
s[i]'y';
else if(s[i]=='c')
s[i]'z';
else
s[i]=s[i]-3;
}
#endif
puts(s);
}
程序執(zhí)行時,輸入:
abcdefg
輸出結果為:
defghij
若將#defineFLAG 0的注釋去掉,則輸入:
abcdefg
輸出結果為:
xyzabcd
點擊加載更多評論>>