c语言debug error_学C语言写自己的K语言:C语言预处理器

C 语言预处理器,需要在编译前对其进行处理,预处理器其实是文本替换作业。所有的预处理器命令都是以#符号开头。

一、常用预处理指令。

  1. #include:包含一个源代码文件;
  2. #define:定义宏;
  3. #undef:取消已定义的宏;
  4. #ifdef:如果宏已经定义,则返回真;
  5. #ifndef:如果宏没有定义,则返回真;
  6. #if:如果给定条件为真,则编译下面代码;
  7. #else:#if 的替代方案;
  8. #elif:如果前面的 #if 给定条件不为真,当前条件为真,则编译下面代码;
  9. #endif:结束一个 #if……#else 条件编译块;
  10. #error:当遇到标准错误时,输出错误消息;
  11. #pragma:使用标准化方法,向编译器发布特殊的命令到编译器中。

二、包含文件。

  • #include。
#include 

三、 条件编译。

  • #if, #else, #elif #endif;
#include 
  • #ifdef, #ifndef
#include 
  • 常用于不同系统或版本的支持上。
/* __unix__ is usually defined by compilers targeting Unix systems */

四、#define 定义宏,#undef 取消已定义的宏。

  • 定义宏,无参数。如:定义常量;
#include 
  • 定义宏,有参数。
带参数的宏与函数相似,但本质是完全不相同的。如下#define MAX( x, y ) ( ((x) > (y)) ? (x) : (y) ),是在出现MAX( x, y )的地方被预处理为 ( ((x) > (y)) ? (x) : (y) ),如果int x = 10, y = 20, 则被替换为 ( ((10) > (20)) ? (10) : (20) ),所以结果是20。
#include 
  • 取消已定义的宏。
#include 

五、用户定义的编译错误与警告。

  • #error 其主要的作用是在编译的时候输出编译错误信息。
#include 
  • #pragma 提供了编译器特定的预处理功能。

请参考:#pragma 百度百科。下面的示例中请留意编译时的输出,VS在菜单中选择“生成”->“编译”。

  1. #pragma message;
  2. #pragma code_seg;
  3. #pragma once;
  4. #pragma resource;
  5. #pragma resource
  6. #pragma warning;
  7. #pragma comment;
  8. #pragma pack。
#include 

下一章,学C语言写自己的K语言:函数进阶。

让我们在这里,遇见明天的自己!姜友华

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值