首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

define与typedef

在嵌入式开发中经常会用到宏定义define和typedef,它们俩在使用上有些类似,容易混淆,那么他们有什么区别呢? 1....二者的本质 #define是宏定义,它是一种预处理命令,在预处理的时候进行简单的文本替换操作,其表达式一般如下: #define 标识符 字符串 /*宏定义结尾不加;*/ 在预处理时会把自己定义的标识符替换为宏定义中的字符串...,比如: #define PI 3.14 这个宏定义的作用是把代码中的PI替换为3.14,在程序中遇到PI就可以把他看作3.14这个常数(前提是在宏定义的作用域内)。...二者的区别 举例说明名二者的本质区别: #define my_type1_t (int *) typedef int* my_type2_t; /*用两个数据类型分别定义变量*/ my_type1_t...* @retval None */ #define assert_param(expr) ((expr) ?

6710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    #define 以及##

    #define定义标示符 #define定义标示符就是将一个名称起一个别名,在程序运行之前使用别名将原来的名字替换掉,从而达到简化代码书写的作用 #define的语法 define name stuff...name是别名,stuff是原本的名称 #define NUM 120 #define STR "abcdef" int main() { printf("%d\n", NUM + 10);...printf("%s", STR); return 0; } 其实#define就是将NUM 和 STR 简单的进行了转换,再进行计算即可 define也可以将复杂的符号进行简单的替换...int a = 0; return 0; } 注意:#define 后面最好不要加上分号,避免不必要的错误 #define定义宏 宏的声明方式 define name( parament-list...define只是进行了简单的替换,并不会进行运算 #define ADD(x) x+x #define MUL(x) x*x int main() { int ret = ADD(2);

    64321

    C++ #define详解

    其定义的一般形式为: #define 标识符 字符串 其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。...例如: #define M (a+b) 它的作用是指定标识符M来代替表达式(a+b)。...在编写源程序时,所有的(a+b)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用(a+b)表达式去置换所有的宏名M,然后再进行编译。...带参宏调用的一般形式为: 宏名(形参表) 例如: #define M(y) ((y)(y)+3(y)) /宏定义/ … k=M(5); /宏调用/ … 在宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为...: k=55+35 程序2: 复制代码 #define MAX(a,b) (a>b)?

    1.7K10

    typedef 和define的区别

    总结一下typedef和#define的区别 1.概念   #define 它在编译预处理时进行简单的替换,不作正确性检查。它是预处理指令。  ...例子: #define: #define DO double DO val =5;//相当于 double va =5; #define FUN(X) X+5 int va = FUN(3); //...fun是一个指向 void类型的指针函数 void StrGet() { qDebug()<<"str"; } fun f1=StrGet; f1(); 2.区别 执行时间不一样     #define...是在预处理阶段,也就是在编译之前进行替换工作     typedef 是在编译阶段,会进行类型检查 作用域不同     #define 无论在哪定义过,在其它的地都可以使用     typedef...只能在定义的作用域内使用 对指针的操作不一样 #define PINT int * typedef int * pint; int a =3; int b =5; const

    1.1K70

    Oracle define用法简介教程

    本文链接:https://blog.csdn.net/u014427391/article/details/101052911 继上一篇博客Oracle绑定变量学习笔记,再写一篇define变量的简单教程...文章目录 1、define常量用法 2、&和&&符号用法 1、define常量用法 注意:define常被误解为定义变量,其实不然,define定义的是字符常量,define定义一下常量,然后用&或者...&&符号进行引用 环境准备,先建表来实验: create table t as select * from dba_object; define一个常量a,然后直接查询用&符号表示 SQL> define...,就明白了 这里不用define定义常量,直接用&和&&符号 SQL> select * from t where object_id = &b; 如图,会提示你输入值 ?...define字符类型的常量 如果define定义的字符类型的常量,引用时候要加上单引号 select * from t where object_name = '&a'; ?

    1.2K30

    【C语言】#define的认识

    #define定义常量 (1)基本语法 #define name stuff 例如 #define MAX 100//定义MAX为100 int main() { //int i = 100; int...i = MAX;//与上面是一样的 return 0; } #define reg register //为register这个关键字创建一个简短的名字 #define d0_forever...#define定义宏 (1)定义 #define 机制包括了⼀个规定,允许把参数替换到⽂本中,这种实现通常称为宏(macro)或定义宏 (define macro)。...3.宏替换的规则 在程序中扩展#define定义符号和宏时,需要涉及⼏个步骤。 1. 在调⽤宏时,⾸先对参数进⾏检查,看看是否包含任何由#define定义的符号。...宏参数和#define 定义中可以出现其他#define定义的符号。但是对于宏,不能出现递归。 2. 当预处理器搜索#define定义的符号的时候,字符串常量的内容并不被搜索。

    11810

    const与#define的区别、优点

    const与#define的区别 编译器处理方式不同 define宏是在预处理阶段展开。 补充:预处理器根据以#开头的命令,修改原始的程序。...咱们的#define也是,仅仅是单纯的文本替换。 const常量是编译运行阶段使用。 类型和安全检查不同 define宏没有数据类型,不做任何类型检查,仅仅是展开。...const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而 #define定义的常量在内存中有若干个拷贝...define是不能进行调试的,因为在预编译阶段就已经替换掉了。 const优点 const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。...#define的优点 宏可以定义一些函数,const不可以 宏可以使代更码简洁 使用宏可以方便代码维护 宏还可以定义带参数的宏,做到一定程度的泛型(利用#或者##操作符)

    1.7K10
    领券