条件编译和if-else的区别

1、c语言在头文件中,会使用

                          #ifndefine   ......

                          #define  ......

                         .......

                          #endif

这样做是为了防止头文件被多重包含。         

2、在.c程序中,我们也看到有条件编译

情形一:

#if 整型常量表达式1
    程序段1
#elif 整型常量表达式2
    程序段2
#else
    程序段3
#endif

情形二:

#ifdef  宏名
    程序段1
#else
    程序段2
#endif

程序中的条件编译有什么用呢?为什么不能用if-else代替呢?

我们知道所谓的条件编译是根据条件的不同,而进行选择性编译,即如果条件不满足,代码是不会被编译的,但是if-esle即便不满足条件也是会被编译的。

条件编译使用情况:

跨语言,比如C++和c语言;

跨平台,比如有的代码是在windows平台下,有的是在linux平台下的;

判断宏有没有定义。。等情况。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理中的if-else语句是一种条件控制语句,用于根据条件的真假执行不同的代码块。在编译原理中,if-else语句的处理通常包括词法分析、语法分析和语义分析等步骤。 下面是一个简单的示例,演示了如何使用C语言编写一个词法分析器来处理if-else语句: ```c #include <stdio.h> #include <string.h> // 定义关键字和种别码 char keywords[4][10] = {"if", "else", "then", "endif"}; int codes[4] = {1, 2, 3, 4}; // 词法分析函数 void lexer(char *input) { char *token = strtok(input, " "); // 使用空格作为分隔符分割输入字符串 while (token != NULL) { int i; int isKeyword = 0; for (i = 0; i < 4; i++) { if (strcmp(token, keywords[i]) == 0) { printf("%s: %d\n", token, codes[i]); // 输出单词和对应的种别码 isKeyword = 1; break; } } if (!isKeyword) { printf("%s: identifier\n", token); // 输出标识符 } token = strtok(NULL, " "); // 继续获取下一个单词 } } int main() { char input[100]; printf("请输入一个简单的小程序:"); fgets(input, sizeof(input), stdin); // 从标准输入读取输入字符串 lexer(input); // 调用词法分析函数 return 0; } ``` 这段代码实现了一个简单的词法分析器,它可以将输入的小程序分解为单词,并输出每个单词的种别码。在这个示例中,我们定义了四个关键字(if、else、then、endif)和对应的种别码(1、2、3、4)。如果输入的单词不是关键字,则被视为标识符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值