c/c++ 结构体前加不加typedef有什么区别?
结构体前面加不加typedef有什么区别?
为什么c程序中定义结构时经常要用到typedef呢?如:
typedef struct _am_win_menutext { int idc int message } am_win_menutext
为什么不直接把结构名定义为am_win_menutext然后使用就可以了。
取个类型的别名有什么作用呢?
---------------------------------
那是因为不取别名的话,每次定义都要加struct
---------------------------------
“直接把结构名定义为am_win_menutext然后使用”
这样你在使用时必须这样
struct am_win_menutext myval
定义了别名之后就可以
am_win_menutext myval
这样可以更清晰。
---------------------------------
主要在c语言里这样使用 使得更方便.
c++就不用typedef 也可以直接使用结构体名.
c++中使用:
struct test{int x y }
就可以定义一个名为test的结构体,但c中很可能编译通不过。c语言并不支持在struct后使用标示符定义结构体的名字,test将会被忽略,这相当 于定义了一个没有名字的结构体。若定义一个该结构体对象test mt 将会提示未定义的test错误信息。所以,在c语言中,一般使用typedef来定义结构体,上面的例子可以改为:
typedef struct _test{int x y }test
_test要不要都可以。并且,第一个大括号不能像原来那样随便的换行写(因为是typedef)。
结论:反正就是加typedef兼容性更好,不然c++里能跑的代码用c编译器跑就出错了
参考文章:结构体前面加不加typedef有什么区别?
c/c++ 结构体前加不加typedef有什么区别?相关推荐
- 结构体前面加星号_C语言中带星号的类型指针有哪些特性
C语言中带星号的类型指针有哪些特性 指针是什么?很多人说,指针就是地址,那这么说的人肯定是对指针有所了解,他们这么说也不能说全错,我只能在这里说:"他们并没有真正学会指针,如果想学好指针,请 ...
- c语言结构体定义和使用typedef,结构体定义typedef struct 用法详解
typedef是类型定义的意思,typedef struct是为了使用这个结构体方便. 在了解typedef之前我们先来了解一下什么是结构体类型: C++提供了许多种基本的数据类型(如int.floa ...
- C语言中访问结构体成员时 点 . 和 箭头 - 的区别
点(.)是用于结构体变量访问成员,箭头(->)是用于结构体指针访问成员. 例如: #include <stdio.h>int main(void) {struct Smy {int ...
- Nginx中location、proxy_pass后方加不加斜杠/的区别
通过nginx访问 127.0.0.1/api/test 1.location和proxy_pass都不加斜杠 location /api {proxy_pass http://127.0.0.1:8 ...
- php 类static引用函数吗,php中在变量和函数前加static关键字之后的区别
static全局变量和普通全局变量,static局部变量和普通局部变量,static函数与普通函数的区别?下面本文将一一为你解答. (1)全局变量(外部变量)的说明之前再冠以static 就构成了静态 ...
- MYSQL_BIND结构体_bindColumn、bindParam与bindValue的区别
实例 bindColumn:绑定一列到一个 PHP 变量(类似于list()函数为变量赋值) //连接数据库函数 functionconnect() { try { $dbh = new PDO(&q ...
- 整数边界对齐方式_c中结构体边界对齐(转)
c中结构体边界对齐(转) 2011-11-23 11:15:52| 分类: C&C++ | 标签: |字号大中小 C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.结构体到底怎 ...
- C语言结构体的大小 — — 内存对齐和位域
C语言结构体对齐 C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结 ...
- c++ 结构体地址 转换成ulong_零基础入门之结构体字节对齐
一.字节对齐的规则: 1.一般设置的对齐方式为1,2,4字节对齐方式.结构的首地址必须是结构内最宽类型的整数倍地址;另外,结构体的每一个成员起始地址必须是自身类型大小的整数倍(需要特别注意的是wind ...
最新文章
- 数据挖掘竞赛指南:曾经的数据挖掘少年,如今的阿里算法大佬
- hdu4454 三分 求点到圆,然后在到矩形的最短路
- 从家书到小票!看到海尔智家的转型是真的
- 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结
- Python实现心跳保活TCP长连接
- 从行驶的车上向上抛球,球真的会回到原地吗?
- asp.net运行时动态修改主题
- Angular4.x+Ionic3 踩坑之路之打包时出现JAVASCRIPT HEAP OUT OF MEMORY的几种解决办法
- 解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示The operation could not be completed. 的问题。...
- python与office结合可以干什么-Python 进行Office开发(以Word为例)
- Spring定时器cron表达式
- 全套思源黑体合集(含ttf/ttc版/行高修正版)
- ROSCon 2019 机器人操作系统国际盛会
- Flash8-动态显示汉字乱码问题的解决
- Win7自带驱动备份功能使用教程
- 精品软件 推荐 Bootice(引导扇区维护工具)
- love2d 编译 android,Love2D游戏脚本在windows平台下打包exe发布教程
- [云原生专题-1]:总体-云原生初步探究,什么是云原生,云原生的基本特性
- n子棋,你能下赢电脑吗,来玩玩吧
- Labview Ethernetip TCP网口通讯欧姆龙PLC OmronNX1P2NJ501NJ301PLC标签通讯 CIP通讯比Fins通讯更完美