C++中typedef用法说明

2023-05-16

typedef声明提供了一种将标识符声明为类型别名的方法,用于替换复杂的类型名。


解释

在声明中使用typedef说明符时,会指定这个声明是typedef声明,而不是变量或函数声明。通常,typedef说明符出现在声明的开头,但允许它出现在类型说明符之后,或者出现在两个类型说明符之间。

typedef声明可以在同一行上声明一个或多个标识符(例如int和指向int的指针),它可以声明数组和函数类型、指针和引用、类类型等。此声明中引入的每个标识符都成为typedef名称,只是省略了typedef。

typedef说明符不能与除类型说明符之外的任何其他说明符组合。

typedef名称是现有类型的别名,不是新类型的声明。Typedef不能用于更改现有类型名称(包括Typedef名称)的含义。一旦声明,typedef名称只能重新声明为再次引用同一类型。Typedef名称仅在其可见的范围内有效:不同的函数或类声明可以定义具有不同含义的同名类型。


用于链接的typedef名称

形式上,如果typedef声明定义了一个未命名的类(class)或枚举(enum),那么声明这个声明的第一个typedef名称将被用来表示类类型或枚举类型,仅用于链接目的。例如,在typedef struct {/*....*/} S;中,S是用于链接的typedef名称。以这种方式定义的类或枚举类型具有外部链接(除非它位于未命名的命名空间中)。

以这种方式定义的未命名类应该只包含C兼容的构造。尤其是,它不能:

  • 声明非静态数据成员、成员枚举或成员类以外的任何成员
  • 具有任何基类或默认成员初始值设定项
  • 包含lambda表达式

所有成员类也必须满足这些要求(递归地)。


注意

type alias使用不同的语法提供与typedef相同的功能,并且也适用于模板名称。


例子

// 最简单的typedef使用
typedef unsigned long ulong;
 
// 如下的两个对象具有相同的类型
unsigned long l1;
ulong l2;
 
// 以下定义了更复杂的类型 
typedef int int_t, *intp_t, (&fp)(int, ulong), arr_t[10];
 
// 下列两个对象具有相同的类型
int a1[10];
arr_t a2;
 
// C语言中通常使用的避免写“struct S”的方式
typedef struct {int a; int b;} S, *pS;
 
// 以下两个对象具有相同的类型
pS ps1;
S* ps2;
 
// 下面的语句会报错,因为存储类说明符(storage-class-specifier)static不能在typedef声明中出现
// typedef static unsigned int uint;
 
// typedef可以在声明语句的任何位置出现
long unsigned typedef int long ullong;
// 但是上述的语句我们通常的使用方法是"typedef unsigned long long int ullong;"
 
// std::add_const, like many other metafunctions, use member typedefs
template< class T>
struct add_const {
    typedef const T type;
};
 
typedef struct Node {
    struct listNode* next; // declares a new (incomplete) struct type named listNode
} listNode; // error: conflicts with the previously declared struct name

官方文档

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中typedef用法说明 的相关文章

  • Flutter 自定义SwitchButton

    效果 xff1a xff08 AppBar中间的SwitchButton xff09 代码 xff1a span class token keyword import span span class token string literal
  • diff算法swift版

    前几天用chatgpt生成diff算法 xff0c 配上swift的简洁语法 xff0c 可以称之为锦上添花 下面是代码 xff1a span class token keyword func span span class token f
  • Flutter 调用摄像头扫描二维码插件

    原生平台如果想要实现二维码扫描很简单 xff0c 例如iOS可以根据Version库或者AVFoudation库很快定制出相应工具来 xff0c Flutter只能依赖第三方插件了 插件依赖 xff1a span class token k
  • 【Linux】搭建Yapi接口管理工具

    在年前员工访谈时发现 xff0c 前后端协作开发会出现一定的内耗现象 xff0c 在当前前后端分离的情况下前端往往会因为后端接口存在问题影响对接速度 xff0c 在接口设计不明确的情况下还需要反复确认和沟通 公司过往使用ApiManager
  • 树莓派3B安装VScode

    树莓派3B安装VScode sudo apt install code xff08 一句命令搞定 xff09 xff08 ps 本来想在树莓派3b上安装VScode 网上找半天 xff0c 结果又臭又长还不能解决问题 xff0c 直到翻了贼
  • Angular is running in the development mode. Call enableProdMode() to enable the production mode.

    控制台输出 xff1a Angular is running in the development mode Call enableProdMode to enable the production mode 解决方法 xff1a 在mai
  • Debian SSH免密登录

    安装服务后修改主配置文件 vim etc ssh sshd config 改这个配置文件 在第32行PermttRootLogin yes 允许root用户登录 systemctl restart sshd 然后再重启一下服务 修改端口号
  • HDFS编程实践(Hadoop3.1.3)

    一 利用Shell命令与HDFS进行交互 1 目录操作 在HDFS中为hadoop用户创建一个用户目录 span class token builtin class name cd span usr local hadoop bin hdf
  • 浅谈<<EOF作用与用法

    其实我对这个东西的用法理解也不深 xff0c 目前也只用过两次 xff0c 但真的可以解决大问题 先说一下 lt lt efo的作用 xff0c 官方的说法是这样的 xff1a 在shell脚本中 xff08 bash编程 xff09 xf
  • 斐讯 r1 起死回生

    此方法已无法使用 xff0c 请需要的网友留言 xff0c 并留邮箱 xff0c 我发新的方法 这里写不了外部连接 2022 7 2 昨天三哥给我这么个东西 xff0c 当初卖2499元 xff0c 因为公司没了 xff0c 现在只能当蓝牙
  • 深入学习 esp8266 wifimanager源码解析(打造专属自己的web配网)(最全的wifimanager介绍))

    原文地址 xff1a https my oschina net u 4269090 blog 3329239 1 前言 废话少说 xff0c 本篇博文的目的就是深入学习 WifiManager 这个github上非常火爆的ESP8266 w
  • 华为p40pro NFC模拟加密小区卡详细教程

    先说点题外话 xff1a 我们小区的门禁卡是加密的 xff0c 去年小区强制使用门禁卡 xff0c 配一个卡要30块 xff0c 我们家附近的所有配门禁卡的店一听说我们小区都说做不了 我对这个东西有一点了解 xff0c 小区不可能用智能卡只
  • 求助帖:如何获取局部变量

    最近在做一个获取和风天气城市 ID的小东西 xff0c 大致内容如下 xff1a 通过 xff1a QWeather getGeoCityLookup MainActivity this inputct new QWeather OnRes
  • arduino esp-01s开发环境配置(备忘)

    很久没玩arduino了 xff0c 前天一个网友提了一个问题要我帮忙 xff0c 结果电脑重新做了系统 xff0c 又要重新设置环境 xff0c 结果忘记了 xff0c 做个备忘 xff0c 省得以后又要重新研究 1 附加开发板管理器网址
  • crontab设置定时重启Apache服务

    重启Apache方法 创建一个新的crontab文件 crontab rootcron root用户设定服务 同时 xff0c 文件副本在 var spool cron目录中 列出crontab文件 每天4点重启 crontab l 0 4
  • PVE安装画面灰白只显示鼠标解决方案

    PVE安装画面灰白只显示鼠标解决方案 最近喜欢到某鱼上折腾一下工控机主板回来搞PVE xff0c 发现不少小伙伴遇到与我一样的问题 xff0c 网上搜索文章 xff0c 并没有很完整 xff0c 于是整理了一下 出现这种情况一般是PVE5
  • 解决java poi之SXSSFWorkbook导出大数据量时自适应列宽效果异常问题

    场景 xff1a 使用SXSSFWorkbook导出大数据量 百万行 excel报表 xff0c 表格样式统一使用自适应列宽时 xff0c 发现导出表头行格式异常 xff0c 异常情况如下图所示 xff1a 分析 xff1a 从导出效果看
  • Win11基于WSL2安装CUDA、cuDNN和TensorRT(2023-03-01)

    文章目录 2023 03 06 更新2023 03 05 更新前言TensorRT介绍环境配置CUDA Driver检查安装 安装CUDA安装nvcc安装cuDNN安装验证 安装TensorRT安装验证 2023 03 06 更新 如果有小
  • python OCR Tesseract 训练

    Ps xff1a Tesseract识别英文和字母效果好 中文的话 xff0c 虽然有训练数据也可以识别 xff0c 但是效果不是很好 Tesseract的安装和使用 xff1a 1 首先用 pip 下载包 pip install tess
  • ffmpeg实战教程(十)ffmpeg/camera实现最近很火的视频壁纸,相机壁纸

    本篇实现一个有意思的玩意儿 xff0c 视频壁纸 xff0c 相机壁纸 这玩意好像现在还都是国外版本 xff0c 哈哈 先上图 xff1a 视频壁纸 相机壁纸 1 动态壁纸制作的知识 xff1a 每一个动态壁纸都继承自WallpaperSe

随机推荐

  • C/C++ 连接两个字符串

    一 xff1a C风格字符串连接 include lt iostream gt using namespace std int main const char str 61 34 hello 34 const char str2 61 34
  • 返回urls跳转后的页面地址

    string urls 61 34 http xxx xxx com SoftDown aspx SoftID 61 275781 amp fdid 61 119418725f1d4e20 34 Response Redirect urls
  • 阶乘数码(基础算法-高精度)

    P1591 阶乘数码 洛谷 计算机科学教育新生态 luogu com cn include lt bits stdc 43 43 h gt include lt iostream gt include lt unordered map gt
  • MPICH的安装与使用

    1 安装MPICH之前 xff0c 首先要在centos6 5上安装c编译器 xff0c 使用指令安装如下 xff1a yum install make 安装make程序 yum install gcc 安装GCC编译器 xff08 支持C
  • 使用cmake生成可执行文件以及开发中常用到的一些指令说明

    span class token macro property span class token directive keyword include span span class token string lt iostream gt s
  • Ubuntu18.04 CUDA10 cudaGetDeviceCount returned 35

    报错现象 我的环境是Ubuntu18 04 安装了CUDA10 运行deviceQuery报错如下 xff1a deviceQuery Starting CUDA Device Query Runtime API version CUDAR
  • Wampserver最全安装教程(一定全绿图标)

    Wampserver最全安装教程 xff08 一定全绿图标 xff09 通过以下步骤进行一定可以全绿 xff0c 一定要按照步骤来哦 xff1a 打开http wampserver aviatechno net 滚到最下面 xff0c 下载
  • WSL安装及配置

    WSL xff0c 全称Windows Subsystem for Linux xff0c 是微软为Windows 10 11集成的功能 xff0c 可以在Windows中不用虚拟机使用Linux 使用WSL首先要开启Windows功能 x
  • “invalid character ‘\x1f‘ looking for beginning of value“ 报错解决方法

    目录 问题背景 分析方法 问题原因 问题背景 这个问题来源于我在开启kubectl proxy代理的时候 xff0c 通过kubectl apply f xxx yaml向代理提交一个configMap对象 xff0c 返回了 34 Err
  • 08-1 UIControl 及其子类 UISegmentedControl 、UISlider

    1 UIControl UIControl是所有控制控件 xff08 比如UIButton UISlider UISegmentedControl等 xff09 的基类 只要跟控制有关的控件都是继承于该类 UISlider是可以响应滑动事件
  • android Settings.Secure的使用

    在Android中 xff0c 许多的系统属性都在settings应用当中进行设置的 xff0c 比如wifi 蓝牙状态 xff0c 当前本机语言 xff0c 屏幕亮度等等一些相关的系统属性值 这些数据主要是存储在数据库中 xff0c 对应
  • 关于VM一启动虚拟机电脑就重启或蓝屏的几个解决方法

    最近在刚开始学习Linux在使用VMware创建新的虚拟机时只要一点启动虚拟机电脑就直接重启了 xff0c 最开始以为是vm版本或者是Linux镜像的原因来来回回换了好几个vm和Linux xff0c 电脑重启了二三十次都没成功启动虚拟机
  • Golang + Qt5 桌面开发终极解决方案

    Golang 43 Qt5 桌面开发终极解决方案 首先要安装Qt和Golang 一 安装前准备 1 下载Go1 4版本的压缩包版本 xff0c 解压至C盘User目录下 2 安装MinGW 并配置相关环境变量 参考链接 xff1a MinG
  • Oracle snapper ASH监控工具

    Oracle snapper ASH监控工具 snapper工具是由国外技术人员 xff0c 将基于Oracle ash技术原理用来监控数据库会话的负载情况 比较适合小范围时间监控 xff0c 可以生成多个快照 xff0c 例如1小时内 x
  • Matlab之数据筛选

    Matlab功能强大 xff0c 这里介绍一些数据筛选方法 xff0c 至少让其达到Excel的数据筛选程度 一 从多维数组中取某些行或列组合为新数组 示例如下 xff1a 取某些列组成新数组 newdata span class toke
  • kurento-room的搭建教程,绝对可行

    目前网上参考的kurento room的搭建教程 xff0c 比如https blog csdn net u010602143 article details 106670864 已经跑不起了 我估计原来也跑不起 原因很简单 xff0c k
  • Python 爬取携程所有机票

    打开携程网 xff0c 查询机票 xff0c 如广州到成都 这时网址为 xff1a http flights ctrip com booking CAN CTU day 1 html DDate1 61 2018 06 15 其中 xff0
  • Rust Web框架warp使用

    目录 简介快速开始Request和Response从path和body中获取参数从query中获取参数 设置状态码 静态文件 目录websocket重定向tls 简介 warp是一个超级便捷 可组合 速度极快的异步Web框架 目前最新版本为
  • CCNP路由实验之四 动态路由协议之EIGRP

    CCNP 路由实验之四 动态路由协议之 EIGRP 动态路由协议可以自动的发现远程网络 xff0c 只要网络拓扑结构发生了变化 xff0c 路由器就会相互交换路由信息 xff0c 不仅能够自动获知新增加的网络 xff0c 还可以在当前网络连
  • C++中typedef用法说明

    typedef声明提供了一种将标识符声明为类型别名的方法 xff0c 用于替换复杂的类型名 解释 在声明中使用typedef说明符时 xff0c 会指定这个声明是typedef声明 xff0c 而不是变量或函数声明 通常 xff0c typ