完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
17个回答
|
|
|
|
|
|
|
|
|
|
第一行宏定义错误 区分一下#define与typedef
|
|
|
|
分享是一种美德
|
|
|
|
有错,#define A int宏定义,不能直接拿来定义变量
|
|
|
|
原则上不会这么宏定义,两者的语法都没错,编译器并不会报错.但是不建议这么做,没什么实际意义其实。你要取个有辨识度的定义名啊,比如这样U8的定义,
typedef unsigned char U8; |
|
|
|
第二行加分号。说第一行有错的,该去看看C语言了。
|
|
|
|
水平有限哈!貌似两种都可以,就是少了个分号。
|
|
|
|
第一行错了,#define是宏定义,定义常量的,不能定义int关键字
|
|
|
|
两个应该都没什么问题
第一个是对的,我现在写单片机就经常用到 #define uchar unsigned char 第二个应该也没问题,根据我对下面百度内容的理解。 —— typedef是C/C++的一个关键字,其功能是定义一个新的自定义类型。形式为 typedef OLD_TYPE NEW_TYPE 也就是给OLD_TYPE起一个别名,起到简化代码的作用。 在这里,typedef int *p; 其实是 typedef int* p; 即int*是一体的,而p是新类型的名字。 在如此定义后,p就等同于int *的效果 |
|
|
|
使用上确实只是少个分号;规范上讲就如同12楼所说的别名与类型的问题了
|
|
|
|
typedef是C语言中的一个关键字,作用是对已存在的数据类型重命名,但是并没有产生新的数据类型。#define宏定义的话就是最简单最直观的替换,在预编译阶段就完成了的。这里引用别人的一个例子说一下区别。
#define PCHAR char * PHCAR p3,p4; typedef char * pchar pchar p1,p2; 在这里p4不是指针,仅仅是一个char类型的字符。 引自《C语言深度剖析》第二版P48 |
|
|
|
typedef 用来对寄存器进行定义,面向的对象是寄存器,define是宏定义,用一个标识符代替一个常量或表达式
|
|
|
|
楼主应该选择一个答案来了
|
|
|
|
搬个凳子来学习
|
|
|
|
|
|
|
|
这个百度一下,就有很多的文章。。。
以下内容复制过来给你看看: typedef和#define的用法与区别 一、typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: typedef int INT; typedef int ARRAY[10]; typedef (int*) pINT; typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。 二、#define的用法 #define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编 译过程中进行,而是在这之前(预处理过程)就已经完成了,但也因此难以发现潜在的错误及其它代码维护问题,它的实例像: #define INT int #define TRUE 1 #define Add(a,b) ((a)+(b)); #define Loop_10 for (int i=0; i<10; i++) 在Scott Meyer的Effective C++一书的条款1中有关于#define语句弊端的分析,以及好的替代方法,大家可参看。 三、typedef与#define的区别 从以上的概念便也能基本清楚,typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中是为了定义常量 ,到了C++,const、enum、inline的出现使它也渐渐成为了起别名的工具。有时很容易搞不清楚与typedef两者到底该用哪个好,如#define INT int这样的语句,用typedef一样可以完成,用哪个好呢?我主张用typedef,因为在早期的许多C编译器中这条语句是非法的,只是现今的 编译器又做了扩充。为了尽可能地兼容,一般都遵循#define定义“可读”的常量以及一些宏语句的任务,而typedef则常用来定义关键字、冗 长的类型的别名。 宏定义只是简单的字符串代换(原地扩展),而typedef则不是原地扩展,它的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变 量的功能。请看上面第一大点代码的第三行: typedef (int*) pINT; 以及下面这行: #define pINT2 int* 效果相同?实则不同!实践中见差别:pINT a,b;的效果同int *a; int *b;表示定义了两个整型指针变量。而pINT2 a,b;的效果同int *a, b; 表示定义了一个整型指针变量a和整型变量b。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
657 浏览 0 评论
2334 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2137 浏览 3 评论
4767 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2282 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 10:15 , Processed in 0.908580 second(s), Total 107, Slave 90 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号