define和typedef的区别
#define 只是简单的替换,typedef 是定义了一种类型,即是对某种类型定义一个别名。
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:
#define PI 3.1415926
程序中的:area=PI*r*r 会替换为3.1415926*r*r
如果你把#define语句中的数字9 写成字母g 预处理也照样带入。
2)typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifier inside a function definition。
3)typedef int * int_ptr;
与
#define int_ptr int *
作用都是用int_ptr代表 int * ,但是二者不同,正如前面所说 ,#define在预处理 时进行简单的替换,而typedef不是简单替换 ,而是采用如同定义变量的方法那样来声明一种类型。也就是说;
//refer to (xzgyb(老达摩))
#define int_ptr int *
int_ptr a, b; //相当于int * a, b; 只是简单的宏替换
typedef int* int_ptr;
int_ptr a, b; //a, b 都为指向int的指针,typedef为int* 引入了一个新的助记符
这也说明了为什么下面观点成立
//QunKangLi(维护成本与程序员的创造力的平方成正比)
typedef int * pint ;
#define PINT int *
那么:
const pint p ;//p不可更改,但p指向的内容可更改
const PINT p ;//p可更改,但是p指向的内容不可更改。
pint是一种指针类型 const pint p 就是把指针给锁住了 p不可更改
而const PINT p 是const int * p 锁的是指针p所指的对象。
3)也许您已经注意到#define 不是语句 不要在行末加分号,否则 会连分号一块置换。
分享到:
相关推荐
与 `#define` 相比,`typedef` 更安全,因为它的类型系统会确保新类型符合语法规则。同时,`typedef` 的作用范围通常限于它被定义的地方,不像 `#define` 全局有效。 在涉及到指针和常量时,`typedef` 和 `#define`...
"define与typedef区别与联系" 本文介绍了C语言中两个关键字define和typedef之间的区别以及使用时应注意的问题。 define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,...
typedef与define的区别 在C/C++语言中,typedef和define是两个常用的关键字,虽然它们都可以用来定义别名,但是它们的用法和特点却有很大的区别。 一、typedef的用法 typedef是C/C++语言中的一个关键字,用于定义...
在 C 语言中,有两个重要的概念,即 #define 和 typedef,它们都是用于定义符号的,但它们之间有着很大的区别。 首先,让我们来看一下 #define。#define 是一个预处理指令,它是宏定义语句。在编译预处理时进行简单...
### #define 的使用及其特性 ...通过以上的详细介绍,我们可以看出 `#define` 和 `typedef` 在 C 或 C++ 中各自发挥着重要的作用,根据具体的应用场景选择合适的工具可以使程序变得更加高效、易读和易于维护。
"define与typedef数据类型表示的区别" 在C语言编程中,我们经常需要对数据类型进行类型的表示或别名,以便于代码的简洁和书写方便。通常有两种方法可以实现,即define宏和typedef。下面我们将详细介绍这两种方法的...
typedef 和 define 的区别 typedef 和 define 是 C/C++ 语言中的两个重要概念,它们都是用于定义标识符或常量的,但它们之间存在着一定的区别。 首先,typedef 用于定义一个标识符或关键字的别名,它是语言编译...
本文将深入探讨`define`与`typedef`的区别,以及为什么在某些情况下应优先选择`typedef`。 #### 一、`define`简介 `define`是C预处理器的一个指令,用于创建宏定义。宏可以是简单的文本替换,也可以用于定义常量或...
### define和typedef.md #### 两者区别 在C语言中,`typedef` 和 `define` 都被广泛用于简化代码的编写以及提高代码的可读性。然而,它们之间存在着本质的区别,在不同的场景下有着各自的优势和局限性。 ### 1. ...
本篇文章将详细介绍`typedef`的四个主要用途,两个需要注意的陷阱,以及它与`#define`的区别。 **`typedef` 的四大用途** 1. **简化复杂类型名**:`typedef` 可用于为复杂的类型定义一个简短易记的名字。例如,当...
在C语言中,`#define` 和 `typedef` 都是用来创建别名的,但它们在使用和效果上有显著的区别。这篇文章将详细讲解这两种方法在互换时的细节,并探讨它们各自的特点。 首先,`#define` 是预处理器指令,它会进行文本...
"#define, const, typedef 三者联系与区别" #define, const, 和 typedef 是 C programming 语言中的三个基本概念,它们之间存在着紧密的联系和区别。下面我们将详细介绍它们之间的联系和区别。 一、 #define 与 ...
typedef和#define的用法与区别 一、typedef的用法 在C/C++语言中,typedef是一种语言编译过程中的一部分,它常用来定义一个标识符及关键字的别名。它并不实际分配内存空间,实例像:typedef int INT;typedef int ...
`#define`与`typedef`的区别: 1. `#define`是预处理器指令,进行简单的文本替换,不检查语法或类型。例如,`#define PI 3.1415926`,如果误写为`g`,预处理器仍会替换,导致编译错误。 2. `typedef`是在编译阶段...
一些教材将 typedef 介绍为 #define 的一种形式,但实际上 typedef 和 #define 是两种不同的语句。typedef 是一个声明,用于创建一个别名,而 #define 是一个宏定义,用于替换文本。许多人将 typedef 看作是 #define...
定义的类型不同,typedef定义的是类型,而#define不只是可以为类型取别名,还可以定义常量、变量、编译开关等。 书写方式不同,typedef是定义类型在前,定义对象在后,而#define正好相反 typedef unsigned char u8; ...
typedef和define的详细区别 在计算机编程语言中,typedef和#define是两个常用的关键字,都是用于声明和定义类型的,但是它们之间有着很大的区别。 首先,typedef是一种在计算机编程语言中用来声明自定义数据类型,...