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

C++中的内部typedef - 好风格还是坏风格?

在 C++ 中,typedef 用于为现有的数据类型提供一个别名,以简化代码中的书写。这种用法既有优点,也有缺点,具体取决于使用场景和个人编程风格。

优点:

  1. 提高代码可读性:使用 typedef 可以让代码更易于阅读和理解。通过为常用数据类型提供一个易懂的别名,可以减少代码中的歧义和误解。
  2. 简化代码:在定义复杂的数据结构或类型时,typedef 可以让代码更加简洁和易于理解。

缺点:

  1. 限制性:typedef 只适用于已经存在的数据类型,不能用于定义新的数据类型。这意味着如果你试图用 typedef 创建一个不存在的数据类型,会导致编译错误。
  2. 代码冗余:在某些情况下,使用 typedef 可以避免在代码中重复定义相同的类型,但这也会导致代码更加冗长和难以阅读。

总的来说,typedef 可以提高代码的可读性和简化代码,但也有一定的限制和缺点。在编写 C++ 代码时,应根据实际需求和编程风格来选择是否使用 typedef。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用表驱动代替switch-case

不知道从什么时候开始,switch-case语句成了代码味道代名词,写代码时候小心翼翼地避开它,看到别人代码switch-case就皱眉头,想想其实大可不必这样,switch-case语句并不是代码味道根源...,味道来自糟糕代码(结构)设计,比如过多switch-case分支,或者多重switch-case嵌套等等,这些都将导致代码可读性下降,如果再加上代码风格较差,代码不对齐,那么味道就相当地大了。...简短switch-case还是继续用吧,但是对于分支太多长switch-case最好能想办法化解开,那么什么算长什么算短呢?...DISPATCH_END(UN_SUPPORT) return rc; } 嗯,一点,但好不到哪里去,只是用一行代替多行而已,并不能改变代码随着功能增多线性增长趋势。...那就需要封装,通常是用struct和union结合定义一个统一数据结构做为接口参数,不同分支dispatch函数内部根据需要从这个统一数据结构中提取相应数据。

59950

Effective C++:规定27:尽量少做动作过渡

大家,又见面了,我是全栈君。...(一个)C风格遗留转换: (T)expression T(expression) (二)C++提供四种新式转型: (1)const_cast(expression):去除表达式常量性。...是C++唯一能做此操作转型操作符。 (2)dynamic_cast(expression):主要用来运行“安全向下转型”,即用来决定某对象是否归属继承体系某个类型。...(static_cast(15));//c++风格转型动作创建一个Widget对象 (五)先看以下这个代码: class Base{...}; class Derived : public...优良c++代码非常少使用转型,我们应该尽可能隔离转型动作。一般是把它隐藏在某个函数内,函数接口会保护调用者不受函数内部不论什么肮脏龌龊动作影响。

21320

编程规范_这个星球上最好C编程风格

我能感受到他们激情和天赋,如果不能在他们茁壮成长时候去提醒下他们,这就是我失责了。所以为了让东西传承下去,这也是我今天做分享原因。 那谁是这个星球上最好C编程风格呢?...老东家编程风格是参考uCos,有的朋友喜欢Qt风格,有的喜欢苹果webkit。今天分享一个目前最流行C编程规范。...这几年我听到很多公司都采用谷歌编程风格,所以我就姑且认为目前google编程风格是这个星球上最流行编程风格。拉里佩奇是我最喜欢偶像,对谷歌也是充满崇拜。...这是谷歌C++编程风格指南Google C++ Style Guide。 为了方便大家,我也专门挑出了C语言相关部分,并且翻译成了中文,这几天连着晚上加班熬了出来,放在我github上。...什么名字好听才是真正体现功底地方。 诗人贾岛就这样,这个推敲典故就是告诉我们命名重要性,命名让人一看就觉得没文化,命名让人耳目一新。这里我就不展开。

74310

C语言编程规范 clean code

上表变量是指除常量定义以外其他变量,均使用小驼峰风格。 建议1.1 作用域越大,命名应越精确 C 与 C++ 不同,没有名字空间,没有类,所以全局作用域下标识符命名要考虑不要冲突。...命名举例: dhcp_user_log.c 命名举例: dhcp_user-log.c: 不推荐用'-'分隔 dhcpuserlog.c: 未分割单词,可读性差 函数命名 函数命名统一使用大驼峰风格...typedef struct { // Good: 无须自嵌套,使用匿名结构体 int a; int b; } MyType; // 结构体别名用大驼峰风格 typedef...,符号命名来提高代码可读性;需要时候,才辅以注释说明。...建议5.3 使用强类型参数,避免使用void* 尽管不同语言对待强类型和弱类型有自己观点,但是一般认为c/c++是强类型语言,既然我们使用语言是强类型,就应该保持这样风格

4.1K10

C语言编程规范 clean code

上表变量是指除常量定义以外其他变量,均使用小驼峰风格。 建议1.1 作用域越大,命名应越精确 C 与 C++ 不同,没有名字空间,没有类,所以全局作用域下标识符命名要考虑不要冲突。...命名举例: dhcp_user_log.c 命名举例: dhcp_user-log.c: 不推荐用'-'分隔 dhcpuserlog.c: 未分割单词,可读性差 函数命名 函数命名统一使用大驼峰风格...typedef struct { // Good: 无须自嵌套,使用匿名结构体 int a; int b; } MyType; // 结构体别名用大驼峰风格 typedef...,符号命名来提高代码可读性;需要时候,才辅以注释说明。...建议5.3 使用强类型参数,避免使用void* 尽管不同语言对待强类型和弱类型有自己观点,但是一般认为c/c++是强类型语言,既然我们使用语言是强类型,就应该保持这样风格

5.3K10

那些陌生C++关键字

C++使用typename情况有两种: 第一种情况是在函数模板和类模板声明。一般模板声明,使用class关键字指定类型参数,后来C++支持使用typename代替class关键字。...::MyType * pvar;//定义指针 typedef MyClass::MyType MyType;//重新命名类型 这些使用方式并没有太大问题,问题可能出现在带有模板代码,例如: template...通过typename明确告诉编译器,这里使用是类型。这样编译器就明确类型T引出成员是类型,而不是变量或者函数名。因此,typename使用范围也被限定在模板函数内部。...五、explicit Explicit含义是显式,它和C++隐式转换相关。例如: double a=100; 编译器会自动将整数100转化为浮点类型。...C++延续了C风格强制类型转换语法: (类型)表达式 但是C风格转换具体很大风险性,为此,C++支持四种关键字对不同形式类型转换进行分别处理。

91170

VSCode配置eslint

注意:这样设置后,是vscode右键格式化显示效果;不过还有点小问题,函数名后面的圆括号与函数名不会格式化后添加空格(而这导致在eslint语法报错,╮(╯▽╰)╭) 解决方法是安装ESLint插件,...其实有时候也不得不说是一种无奈,eslint制定了规则,因为使用它,所以算是半强迫状态接收它某些规则(即使某些规则刚开始让人有点不适应) 由原先C++等语言在行末尾加分号,使用python时tab=...但是大多数人使用不修改风格,而如果你去使用修改后风格,沟通协作又是一个问题!】 业界也是对这些东西争论不休,无奈╮(╯▽╰)╭。...整天哪么语言最好,加分号还是不加分号(这里可看知乎链接),vim最强编辑器等等! 明明是可选规则,而某些工具强制性般使用一种规则。...也不知是,不过本人也只有“入乡随俗”,紧跟“大潮流”,不断变化吧╮(╯▽╰)╭ js不加分号主要在圆括号,方括号,正则开头斜杠,加号,减号(后三种比较少见,前面两种主要体现在IIFE立即执行函数表达式

5.2K50

C++打怪 之 编程风格指南 V1.0

C++用法很多,包容性也比较强。一个C++工程可能包含了各种各样没见过用法。...本篇内容主要是参照谷歌C++标准规范,结合自身实际工作 及经验,整理一份适合平时C++开发规则,规范自身C++编程规范。详细内容可参考《Google C++风格指南》。...1 函数 1.1 参数顺序 总述 函数参数顺序为: 输入参数在先, 后跟输出参数. 说明 C/C++ 函数参数或者是函数输入, 或者是函数输出, 或兼而有之....宏定义参数,可以使用小写。 3 注释 注释重要性不亚于代码实现,注释能够让代码可读性更强。优秀注释能减轻开发人员自身负担,提高团队开发效率。...参考 《Google C++风格指南》 持续更新... 最后 用心感悟,认真记录,写好每一篇文章,分享每一框干货。愿每一篇文章不负自己,不负看客!

1.2K50

看了这么多代码,谈一谈代码风格

题外话 工作之后,特别是在大厂,看谁技术牛不牛逼,不用看谁写出多牛逼代码,就代码风格扫一眼,立刻就能看出来是正规军还是野生程序员。...例如:int MyAge; 通常来讲 java和go都使用驼峰,C++函数和结构体命名也是用大驼峰,大家可以看到题解C++代码风格就是小驼峰,因为leetcode上给出默认函数命名就是小驼峰...大家如果注意我题解上代码风格,我空格都是有统一规范。 我所有题解C++代码,都是严格按照Google C++编程规范来,这样代码看起来就让人感觉清爽一些。...当然我并不是说一定要按照Google规范来,代码风格其实统一就行,没有严格说谁对谁错。 总结 如果还是学生,使用C++的话,可以按照题解代码风格来,还是比较标准。...如果不是C++就自己选一种代码风格坚持下来, 如果已经工作录友,就要融入团队代码风格了,团队怎么写,自己就怎么来,毕竟不是一个人在战斗。 旧文链接:看了这么多代码,谈一谈代码风格

1.3K31

Google C++ 编程风格指南(六):命名约定

内联函数必须放在 .h 文件. 如果内联函数比较短, 就直接放在 .h . 6.3....类数据成员: 不管是静态还是非静态,类数据成员都可以和普通变量一样, 但要接下划线。 class TableInfo { ......所有编译时常量, 无论是局部, 全局还是, 和其他变量稍微区别一下. k 后接大写字母开头单词: const int kDaysInAWeek = 7; 这规则适用于编译时局部作用域常量,...由于枚举值和宏之间命名冲突, 直接导致了很多问题. 由此, 这里改为优先选择常量风格命名方式. 新代码应该尽可能优先使用常量风格....命名规则特例 如果你命名实体与已有 C/C++ 实体相似, 可参考现有命名策略. bigopen(): 函数名, 参照 open() 形式 uint: typedef bigpos: struct

1.3K20

Android JNI 基础知识

在 Android 上进行 NDK 开发还是得先学会 JNI 相关技能,先可以从 Java 层到 C/C++相互调用,然后再学习 NDK 开发那些技巧。...简单实例 在 AS 新建工程时若选择了 Include C++ Support,就会自带配置 C++ 开发环境。...在声明 native 方法时还是用 Java 来写比较好,比 Kotlin external 关键字要友好多了,可以直接快捷键生成对用 C++ 方法。...指向是 JVM 内部一个字符串,它不是 C 风格字符串 char*,所以不能像使用 C 风格字符串一样来使用 jstring 。...另外还是需要检查是否因为内存溢出而导致返回值为 NULL,因为 JVM 在执行 GetStringCritical 函数时,仍有发生数据复制可能性,尤其是当 JVM 内部存储数组不连续时,为了返回一个指向连续内存空间指针

1.5K30

iOS视频功能模块开发 原

添加在我们需要UI视图上,这个控制器只提供控制相关功能,外部UI并没有为我们提供。...MPMovieControlStyleEmbedded,   // 嵌入视频风格     MPMovieControlStyleFullscreen, // 全屏播放风格          MPMovieControlStyleDefault...property (nonatomic, readonly) BOOL readyForDisplay NS_AVAILABLE_IOS(6_0); 返回YES说明数据栈已经缓存好数据,返回NO则没有缓存...,参数枚举如下,生成缩略图数据回调在后面的通知详说: typedef NS_ENUM(NSInteger, MPMovieTimeOption) {     MPMovieTimeOptionNearestKeyFrame...MPMoviePlayerViewController将视图封装在了一起,其中有一个成员对象是MPMoviePlayerController类型,类似C++has-a逻辑,我们只需要对MPMoviePlayerViewController

1K70

DevOps静态检查

PMD:PMD是一个高度可扩展静态分析工具,支持多种语言,包括Java。它可以检测出潜在Bug、代码味道和代码风格问题。...Python语言体系 Pylint:Pylint是一个用于检查Python代码静态分析工具。它可以检查代码错误、查找不符合规范代码风格,并提供了强大自定义配置功能。...C/C++语言体系 Clang-Tidy:Clang-Tidy是Clang项目的一部分,是一个高度可扩展C/C++静态分析工具。它能够检测代码各种问题,包括风格问题、逻辑错误、性能问题等。...Clang-Tidy具有丰富插件生态和灵活配置选项,可以帮助开发人员编写高质量C/C++代码。...Cppcheck:Cppcheck是一个开源C/C++静态分析工具,主要用于检测C++代码各种内存相关错误、缓冲区溢出等问题。

9610

基础知识 | 每日一练(141)

——菜根谭 读者:什么是 C 最好代码布局风格? 小林:大括号位置并不重要, 尽管人们对此有着执着热情。我们在几种流行风格中选了一种。选一个适合你风格, 然后坚持使用这一风格。...保持布局风格对自己, 对邻近及通用源代码一致比使之完美跟重要。如果你编码环境 (本地习惯或公司政策) 没有建议一个风格, 你也不想发明自己风格, 可以沿用课本风格。...各种缩进和大括号放置之间可以详尽而细致地探讨。“风格品质并不简单, 它包含内容远远不止代码布局细节。不要把时间都花在格式上而忽略了更实质性代码本身质量。

2542929

doxygen教程_genedoc教程

到上一步Doxygen已经完全配置,可以在Run中点击运行了,但为了保存以上配置信息,可以将配置文件存一个.cfg文件,之后再运行Doxygen时只需要将该文件用Doxygen打开,改变第(1)步输入...规范 规范综述  简要说,Doxygen注释块其实就是在C、C++注释块基础添加一些额外标识,使Doxygen把它识别出来, 并将它组织到生成文档中去。  ...在Doxygen,主要通过以下方法将注释块标识成详细(detailed)描述:  JavaDoc风格,在C风格注释块开始使用两个星号’*’: /** * ....... */ Jetbrains全家桶1年46,售后保障稳定  Qt风格代码注释,即在C风格注释块开始处添加一个叹号’!’: /*! * ....... */  使用连续两个以上C++注释行所组成注释块, 而每个注释行开始处要多写一个斜杠或写一个叹号: /// /// ...

4.3K30

浅谈C++回调函数实现

所以,C++回调函数也并非高大上技术,它原理无非就是函数指针或者对象传递。本文就从函数指针开始对回调函数进行说明。...函数指针在C和C++中被经常使用,使用方式也很简单,具体如下面代码所示: typedef int (*Ptr)(int,int); int add(int a,int b){ return (a...3 C++风格回调函数 在C++,如果回调函数是类成员函数,需要将回调函数定义成为静态。当然也可以使用全局函数,但是这样做就会破坏C++封装性。...在前面的代码,都是使用函数指针方式进行,下面的代码使用多态方式实现,为了演示实现方式,代码比较简单。...回调可用于网络编程,如通过回调函数获取服务端返回数据信息并进行处理。 - EOF - 图文:龙小 排版:龙小

1.9K10

Linux内核源码规范解析

内核代码风格超级简单。就是避免可能导致别人误读 表达式。 除了注释、文档和 Kconfig 之外,不要使用空格来缩进,前面的例子是例外,是有意为 之。 选用一个编辑器,不要在行尾留空格。...3 大括号和空格放置 C 语言风格另外一个常见问题是大括号放置。...❞ 清楚整数类型,如此,这层抽象就可以 「帮助」 消除到底是 int 还是 long 混淆。 u8/u16/u32 是完全没有问题 typedef,不过它们更符合类别 (d) 而不是这里。...可能还有其他情况,不过基本规则是 「永远不要」 使用 typedef,除非你可以明 确应用上述某个规则一个。...indent 有很多选项,特别是重新格式化注释时候,你可能需要看一下它手册。不过记住:indent 不能修正编程习惯。

2.7K20

C++primer学习笔记(一)

任何字符可以表示为 \ooo【ooo表示一个八进制数】 对象是内存具有类型区域。初始化不是赋值,初始化是创建并赋值。...typedef用来定义类型同义词。 头文件用于声明,不是定义,因而可以出现多次。定义语句不应该放在头文件里,出现两次会导致多重定义链接错误。...变量是声明还是定义看是否有extern,但不是绝对,函数就看有无大括号{} 两个迭代器指向同一个元素就相等【==】,否则不等。任何改变vector长度操作都会使已存在迭代器失效。...设计良好程序只有在强调速度时才在类实现内部使用数组和指针。数组下标的正确类型是size_t。 预处理器变量NULL在编译时会被数值0替换。指针做减法操作得到是ptrdiff_t类型。...C++强制要求指向const对象指针也必须具有const特性,可以把非const对象地址赋给const指针。

47820
领券