typedef和define的作用域

typedef

如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾;

如果放在某个函数内,定义域就是从定义开始直到该函数结尾;

#define

不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾。

如:

typedef …//此处开始到文件结尾

#define …//此处开始到文件结尾

int negate(int num)

{

typedef …//此处开始到该函数结束。注意,该函数内,此定义前,也不能用

#define …//此处开始到文件结尾

}

typedef …//此处开始到文件结尾

#define …//此处开始到文件结尾

void show()

{

typedef …//此处开始到该函数结束。

#define …//此处开始到文件结尾

}

总结:

(1)       不管是typedef还是define,都不能在定义之前使用;

(2)       typedef受函数范围影响,而define不受;

(3)      不管是typedef还是define,其作用域都不会扩展到别的文件,即使是同一个程序的不同文件,也不能互相使用。

时间: 2024-10-08 03:58:03

typedef和define的作用域的相关文章

typedef和define具体的详细区别

1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如: #define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入. 2)typedef是在编译时处理的.它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef spec

typedef与#define的区别

1.  typedef typedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类型的别名.typedef的作用主要有两点: 1.1  简化复杂的类型声明 简化复杂的类型声明,或给已有类型起一含义明确的别名:如: typedef bool (*FuncPointer)(int, double); //声明了一个返回 bool 类型并带有两个(int和double)形参的函数的指针

c++ typedef和define

1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如:#define pi 3.1415926程序中的:area=pi*r*r 会替换为3.1415926*r*r如果你把#define语句中的数字9 写成字母g 预处理也照样带入. 2)typedef是在编译时处理的.它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifi

typedef与define 傻傻的分不清楚

今天看到 typedef与define的区别 上网搜了一下 总结一下 大部分内容出自百度知道,自己理解后又添了点.如发现不对,留言,大家一起研究一下 typedef int * pint ; #define PINT int * 那么: const pint p ;//p不可更改,但p指向的内容可更改 const PINT p ;//p可更改,但是p指向的内容不可更改.1.#define傻子一样的替换:#define 是宏命令,在编译前,由预处理器做替代,如同文本编辑的替代命令,把程序中的所有遇

typedef 和define的区别

typedef 和define的区别 总结一下typedef和#define的区别 1.概念 #define 它在编译预处理时进行简单的替换,不作正确性检查.它是预处理指令. typedef 它在自己的作用域内给一个已经存在的类型一个别名.它是在是在编译时处理的. 例子: #define: #define DO double DO val =5;//相当于 double va =5; #define FUN(X) X+5 int va = FUN(3); //相当于 va = 3+5 typed

Typedef和#define之间的区别

Typedef和define都可以用来给对象取一个别名,但是两者却有着很大不同. 1. 首先,二者执行时间不同 关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能. Define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查. #define用法例子: #define f(x) x*xmain( ){ int a=6,b=2,c: c=f(a) / f(b): printf("%d //n",c):}

typedef 与 define 的区别

1.区别 (1)定义.执行时间.作用域 定义.执行时间: #define pchar char * typedef char *pchar;     定义的格式差别,显而易见的,要注意,define 是不能存在分号的(文本替换),而typedef 是存在逗号的(类型的重命名).     同时,define 由预处理器进行处理,只做简单的文本替换的工作,不做任何检查(正确性检查.作用域检查.类型检查) typedef 是给一个已经存在类型的别名,在编译时候处理. 作用域:     define 只

typedef和define具体的具体差异

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 i

typedef和define的详细区别

typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字. #define是预处理指令.下面让我们一起来看. typedef是C语言语句,其功能是用户为已有数据类型取“别名”. 例如: typedef int INTEGER: 这以后就可用INTEGER来代替int作整型变量的类型说明了,如: INTEGER a,b; 用typedef定义数组.指针.结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读性.