社区
C++ 语言
帖子详情
宏定义 定义结构体
睡醒了起来再睡
2011-10-24 10:13:09
看代码的时候 都是看到 typedef struct {int a; int b;}MYSTRUCT; 这样去定义一个结构体类型的别名 叫MYSTRUCT 但我试了一下 为什么#define就不能这样对结构体起个昵称呢???
这俩东西 差很多吗
...全文
879
8
打赏
收藏
宏定义 定义结构体
看代码的时候 都是看到 typedef struct {int a; int b;}MYSTRUCT; 这样去定义一个结构体类型的别名 叫MYSTRUCT 但我试了一下 为什么#define就不能这样对结构体起个昵称呢??? 这俩东西 差很多吗
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
睡醒了起来再睡
2011-10-25
打赏
举报
回复
[Quote=引用 2 楼 qq120848369 的回复:]
刚才看了一个帖子,也正好说明为什么不用define;
#define PA struct A*;
typedef struct A *PPA;
PA a,b; ==》 struct A *a,b;
PPA a,b; ==> struct A *a,*b;
[/Quote]
这个也说明不了为什么不能用宏吧 “PA a,b; ==》 struct A *a,b;”中的b 虽然不是指针 但也是A类型的对象啊
睡醒了起来再睡
2011-10-25
打赏
举报
回复
那为啥这样编译不过去呢 哪里不符合语法吗
#define MYSTRUCT struct{int a;int b;};
一叶之舟
2011-10-25
打赏
举报
回复
一个是类型定义,一个是宏定义,两者有本质上的区别。
小时了了
2011-10-25
打赏
举报
回复
如果你故意想让程序晦涩难懂当然可以这么写。
如果想写自己一个星期后还能看懂的代码那最好别这么写。
编译器是不是允许这么做和你应不应该这么做是两回事。
[Quote=引用 5 楼 daihenan 的回复:]
引用 2 楼 qq120848369 的回复:
刚才看了一个帖子,也正好说明为什么不用define;
#define PA struct A*;
typedef struct A *PPA;
PA a,b; ==》 struct A *a,b;
PPA a,b; ==> struct A *a,*b;
这个也说明不了为什么不能用宏吧 “PA a,b; ==》 stru……
[/Quote]
lxyppc
2011-10-25
打赏
举报
回复
为什么说明不了
PA a,b;
你的想定义两个A类型的指针,实际上前一个是指针,后一个是对象。出现了不符合期望的結果。
难道你设计的程序可以忽略指针和对象的差别
[Quote=引用 5 楼 daihenan 的回复:]
这个也说明不了为什么不能用宏吧 “PA a,b; ==》 struct A *a,b;”中的b 虽然不是指针 但也是A类型的对象啊
[/Quote]
shun_qizi_ran
2011-10-24
打赏
举报
回复
搜索一下#define和typedef的区别
qq120848369
2011-10-24
打赏
举报
回复
刚才看了一个帖子,也正好说明为什么不用define;
#define PA struct A*;
typedef struct A *PPA;
PA a,b; ==》 struct A *a,b;
PPA a,b; ==> struct A *a,*b;
qq120848369
2011-10-24
打赏
举报
回复
C语言就这样,明明符合typedef我们凭什么要用#define。
define是字面替换,typedef是C语言语法,两码事。
宏
定义
与
结构体
一:
宏
定义
1、不带参数的
宏
定义
: #define 标识符 字符串 例如:#define PI 3.1415926 说明: (1)宏名一般习惯用大写字母表示,但并非规定,也可以用小写 (2)使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量 (3)
宏
定义
是用宏名代替一个字符串,也就是做简单的置换,并不做正确性检查
结构体
中进行
宏
定义
的意图
在
定义
结构体
时进行
宏
定义
,其作用域从
定义
处开始直至文件结束 与
结构体
外的同名
宏
定义
会有redefine的warning,新的
定义
会覆盖之前的
定义
其作用是告知源代码阅读者,该
宏
定义
是为了该
结构体
中变量而定
定义
,如下代码中,MAY和JUNE
宏
定义
是用于变量month使用。 #include<stdio.h> #define MAY 0 typedef struct test {...
c语言
宏
定义
处理
结构体
,请教c语言
宏
定义
与
结构体
本帖最后由 aaa405944519 于 2016-6-13 17:33 编辑typedef struct RampGen_t //
定义
结构体
{int32_t count;int32_t XSCALE;float out;void (*Init)(struct RampGe...
C项目中变量、
宏
定义
、
结构体
等声明
定义
位置问题(头文件、源文件)
以前还是项目接触的少了,这些基本功不扎实。 目录 一、变量 二、源文件前加一个自己文件名的
宏
定义
现象 三、函数声明时前面加不加extern 四、
宏
定义
、
结构体
、typedef
定义
等位置 一、变量 一个全局变量到底是
定义
在头文件中,还是
定义
在源文件中? 结论:应该
定义
在.c文件中,不能.h文件中。如果
定义
在.h文件中,在链接的时候会报变量重复
定义
错误。 例如:有main.c、mya...
结构体
和
宏
定义
问题: 1.#define? 2.#define M (y * y + 3 * y)? 3.
宏
定义
在””中? 4.
宏
定义
允许嵌套? 5.#include和#include””? 6.条件编译? 7.
结构体
? 8.
结构体
赋初值? 9.引用
结构体
变量中的成员? 10.内存字节对齐? 解答: 1. #define 标识符 字符串; #号开头的都是预处理命令;define为宏
C++ 语言
65,214
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章