草庐IT

c++ - typedef 指针是个好主意吗?

我查看了一些代码并注意到约定是将指针类型转换为SomeStruct*进入typedefSomeStruct*pSomeStruct;这样做有什么好处吗? 最佳答案 当指针本身可以被视为一个“黑匣子”时,这可能是合适的,即一段内部表示应该与代码无关的数据。本质上,如果您的代码从不取消引用指针,而您只是将它传递给API函数(有时通过引用),那么typedef不仅会减少*s在你的代码中,但也建议程序员不要真正干预指针。如果需要,这也使得将来更改API变得更容易。例如,如果您更改为使用ID而不是指针(反之亦然),现有代码不会中断,因为从一开

c++ - 如何 typedef 模板类?

这个问题在这里已经有了答案:C++templatetypedef(1个回答)关闭8年前。我应该如何typedef一个templateclass?比如:typedefstd::vectormyVector;//我知道两种方法:(1)#definemyVectorstd::vector//notsogood(2)templatestructmyVector{typedefstd::vectortype;};//verbose我们在C++0x中有什么更好的吗? 最佳答案 是的。它被称为“aliastemplate”,是C++11中的一个新

c++ - 这个 typedef 语句是什么意思?

在C++引用页面中,他们提供了一些typedef示例,我试图理解它们的含义。//simpletypedeftypedefunsignedlongmylong;//morecomplicatedtypedeftypedefintint_t,*intp_t,(&fp)(int,mylong),arr_t[10];所以我理解的简单typedef(第一个声明)。但是他们用第二个(下面重复)声明了什么?typedefintint_t,*intp_t,(&fp)(int,ulong),arr_t[10];(&fp)(int,mylong)具体是什么意思? 最佳答案

c++ - 为什么每个人都对标准 C 类型进行 typedef?

如果您想使用Qt,你要拥抱quint8,quint16等等。如果你想使用GLib,你要欢迎guint8,guint16等等。开启Linux有u32,s16等等。uC/OS定义SINT32,UINT16等等。如果你必须使用这些东西的某种组合,你最好为麻烦做好准备。因为在你的机器上u32将是typedef超过long和quint32将是typedef超过int并且编译器会提示。如果有,为什么每个人都这样做?这是图书馆的某种传统吗? 最佳答案 stdint.h在开发这些库时并不存在。所以每个库都有自己的typedefs。

objective-c - Objective-C 中的 typedef 枚举是什么?

我认为我根本不了解enum是什么,以及何时使用它。例如:typedefenum{kCircle,kRectangle,kOblateSpheroid}ShapeType;这里真正声明了什么? 最佳答案 这里声明了三件事:声明了一个匿名枚举类型,ShapeType声明了该匿名枚举的typedef,以及三个名称kCircle、kRectangle和kOblateSpheroid被声明为整数常量。让我们分解一下。在最简单的情况下,可以将枚举声明为enumtagname{...};这声明了一个带有标签tagname的枚举。在C和Object

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

我最近发现自己经常做的事情是声明与该类中的特定类相关的typedef,即classLorem{typedefboost::shared_ptrptr;typedefstd::vectorvector;////...//};然后在代码的其他地方使用这些类型:Lorem::vectorlorems;Lorem::ptrlorem(newLorem());lorems.push_back(lorem);我喜欢它的原因:它减少了类模板引入的噪音,std::vector变成Lorem::vector等。它用作意图声明-在上面的示例中,Lorem类旨在通过boost::shared_ptr进行引用

c++ - 带有成员函数指针的 typedef 语法

根据MSDN,typedef语法是:typedeftype-declarationsynonym;很简单:typedefintMY_INT;但是成员函数指针类型定义到底是如何遵守这条规则的呢?typedefint(MyClass::*MyTypedef)(int);100%混淆–同义词(MyTypedef)在中间?谁能解释一下从MSDN非常容易理解的语法格式到上面typedef的反向/随机/前/最后/混合语法的逻辑步骤是什么?*编辑感谢所有快速的答案(以及我的帖子的美化):) 最佳答案 thesynonym(MyTypedef)is

c++ - 带有成员函数指针的 typedef 语法

根据MSDN,typedef语法是:typedeftype-declarationsynonym;很简单:typedefintMY_INT;但是成员函数指针类型定义到底是如何遵守这条规则的呢?typedefint(MyClass::*MyTypedef)(int);100%混淆–同义词(MyTypedef)在中间?谁能解释一下从MSDN非常容易理解的语法格式到上面typedef的反向/随机/前/最后/混合语法的逻辑步骤是什么?*编辑感谢所有快速的答案(以及我的帖子的美化):) 最佳答案 thesynonym(MyTypedef)is

c++ - C++中 'struct'和 'typedef struct'之间的区别?

在C++中,有什么区别:structFoo{...};和:typedefstruct{...}Foo; 最佳答案 在C++中,只有细微的差别。它是从C中继承下来的,在这方面有所作为。C语言标准(C89§3.1.2.3、C99§6.2.3和C11§6.2.3)要求为不同类别的标识符(包括标记标识符(对于struct/union/enum)和普通标识符(用于typedef和其他标识符)。如果你刚才说:structFoo{...};Foox;你会得到一个编译器错误,因为Foo只在标签命名空间中定义。您必须将其声明为:structFoox;

c++ - C++11 中的 'typedef' 和 'using' 有什么区别?

我知道在C++11中我们现在可以使用using来编写类型别名,例如typedefs:typedefintMyInt;据我了解,相当于:usingMyInt=int;新语法源于努力表达“模板类型定义”:templateusingMyType=AnotherType;但是,对于前两个非模板示例,标准中是否还有其他细微差别?例如,typedef以“弱”的方式进行别名。也就是说,它不会创建新类型,而只会创建新名称(这些名称之间隐含转换)。和using是一样的还是生成一个新的类型?有什么不同吗? 最佳答案 它们是等效的,来自标准(强调我的)(