#define与typedef 的区别及C预处理器
2017-08-07 13:49
369 查看
#define与typedef 的区别
#define 是 C 指令,用于为各种数据类型定义别名,与 typedef 类似,但是它们有以下几点不同:
1、typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义
ONE 为1。
例:
typedef unsigned char elem_type; √
#define unsigned char elem_type; √
typedef
ONE 1; ×
#define ONE 0; ×
#define ONE 0 √
2、typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。
C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CPP。
所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。下面列出了所有重要的预处理器指令:
#define 是 C 指令,用于为各种数据类型定义别名,与 typedef 类似,但是它们有以下几点不同:
1、typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义
ONE 为1。
例:
typedef unsigned char elem_type; √
#define unsigned char elem_type; √
typedef
ONE 1; ×
#define ONE 0; ×
#define ONE 0 √
2、typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。
C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CPP。
所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。下面列出了所有重要的预处理器指令:
指令 | 描述 |
---|---|
#define | 定义宏 |
#include | 包含一个源代码文件 |
#undef | 取消已定义的宏 |
#ifdef | 如果宏已经定义,则返回真 |
#ifndef | 如果宏没有定义,则返回真 |
#if | 如果给定条件为真,则编译下面代码 |
#else | #if 的替代方案 |
#elif | 如果前面的 #if 给定条件不为真,当前条件为真,则编译下面代码 |
#endif | 结束一个 #if……#else 条件编译块 |
#error | 当遇到标准错误时,输出错误消息 |
#pragma | 使用标准化方法,向编译器发布特殊的命令到编译器中 |
相关文章推荐
- enum和typedef 与#define宏定义的区别
- #typedef和#define的区别
- typedef与#define区别
- C++中#define、typedef和const的区别
- [c++]通过一个简单的程序引出#define与typedef的区别
- #define与typedef的区别
- typedef与#define的区别
- typedef和#define的用法与区别
- #define用法以及#define和typedef区别
- (转)typedef和#define的用法与区别
- #define 和 typedef的区别
- #define 和 #typedef , const的区别
- #typedef与#define的区别
- Typedef与#define的区别
- #define和typedef区别中的理解
- typedef和#define的用法与区别
- C语言--typedef 和 #define 的区别
- typedef与#define的区别
- 关于typedef的用法总结(以及typedef与#define的用法区别)
- typedef 与#define的区别