Questions tagged «typedef»

在C和C ++中,可以使用typedef关键字为已知数据类型创建别名。


6
C ++ 11中的'typedef'和'using'有什么区别?
我知道在C ++ 11中,我们现在可以using用来编写类型别名,例如typedefs: typedef int MyInt; 据我了解,相当于: using MyInt = int; 并且这种新语法是通过努力表达“ template typedef” 的方式而出现的: template< class T > using MyType = AnotherType< T, MyAllocatorType >; 但是,对于前两个非模板示例,标准中是否还有其他细微差别?例如,typedefs以“弱”方式进行别名。也就是说,它不会创建新类型,而只会创建一个新名称(这些名称之间的转换是隐式的)。 与它相同using还是会生成新类型?有什么区别吗?


6
Typedef函数指针?
Наэтотвопросестьответына 堆栈溢出нарусском:Какработает的typedefвэтомкоде? 我正在学习如何动态加载DLL,但我不明白的是这一行 typedef void (*FunctionFunc)(); 我有几个问题。如果有人能够回答他们,我将不胜感激。 为什么typedef用? 语法看起来很奇怪;之后void应该没有函数名称或其他名称吗?它看起来像一个匿名函数。 是否创建了函数指针来存储函数的内存地址? 所以我现在很困惑;你能为我澄清一下吗?
458 c++  c  pointers  typedef 


1
C ++模板typedef
我有一堂课 template<size_t N, size_t M> class Matrix { // .... }; 我想制作一个typedef创建一个Vector(列向量),它等效于一个Matrix大小为N和1的东西。 typedef Matrix<N,1> Vector<N>; 产生编译错误。以下创建类似的东西,但不完全是我想要的东西: template <size_t N> class Vector: public Matrix<N,1> { }; 是否有解决方案或不太昂贵的解决方法/最佳实践?
368 c++  templates  c++11  typedef 

10
与C#中的typedef等效
在C#中是否存在与typedef等价的东西,或者以某种方式获得了类似的行为?我做了一些谷歌搜索,但是到处看起来都是负面的。目前,我的情况类似于以下情况: class GenericClass<T> { public event EventHandler<EventData> MyEvent; public class EventData : EventArgs { /* snip */ } // ... snip } 现在,不需要火箭科学家去弄清楚,当试图为该事件实现处理程序时,这会很快导致很多类型的输入(对可怕的双关语表示歉意)。最终会变成这样: GenericClass<int> gcInt = new GenericClass<int>; gcInt.MyEvent += new EventHandler<GenericClass<int>.EventData>(gcInt_MyEvent); // ... private void gcInt_MyEvent(object sender, GenericClass<int>.EventData e) { throw new NotImplementedException(); } 除了我而言,我已经在使用复杂类型,而不仅仅是int类型。如果可以简化一点,那就太好了... 编辑:即。也许可以对EventHandler进行typedef定义,而不必重新定义它以获得类似的行为。
326 c#  typedef 


7
了解C语言中函数指针的typedef
当我阅读其他人的代码时,总是感到有些困惑,因为他们的代码带有用于带参数的函数的指针的typedef。我记得,花了一段时间才尝试理解这样的定义,同时又试图理解用C语言编写的数字算法。那么,您能否就如何为函数指针(“做”和“不做”)编写好的typedef共享您的提示和想法,以及它们为什么有用以及如何理解他人的工作?谢谢!


8
uint8_t vs未签名字符
在C 中使用uint8_tover有什么优势unsigned char? 我知道几乎每个系统uint8_t都只是typedef unsigned char,那么为什么要使用它呢?
231 c  typedef 

6
typedef定长数组
我必须定义一个24位数据char[3]类型。我用来表示这种类型。我可以的typedef char[3]来type24?我在代码示例中尝试过。我放入typedef char[3] type24;了头文件。编译器没有对此抱怨。但是,当我void foo(type24 val) {}在C文件中定义一个函数时,它确实抱怨了。我希望能够定义类似type24_to_int32(type24 val)而不是的函数type24_to_int32(char value[3])。
210 c  arrays  gcc  typedef 

9
在C ++中声明枚举时,为什么要使用typedef?
多年以来我都没有写过任何C ++,现在我正尝试重新使用它。然后,我遇到了这个问题,并考虑放弃: typedef enum TokenType { blah1 = 0x00000000, blah2 = 0X01000000, blah3 = 0X02000000 } TokenType; 这是什么?为什么在typedef这里使用关键字?为什么名称TokenType在此声明中出现两次?语义与此有何不同: enum TokenType { blah1 = 0x00000000, blah2=0x01000000, blah3=0x02000000 };
183 c++  enums  typedef 

9
C ++中的内部typedef-好样式还是坏样式?
我最近发现自己经常做的事情是声明与该类中特定类相关的typedef,即 class Lorem { typedef boost::shared_ptr<Lorem> ptr; typedef std::vector<Lorem::ptr> vector; // // ... // }; 这些类型然后在代码的其他地方使用: Lorem::vector lorems; Lorem::ptr lorem( new Lorem() ); lorems.push_back( lorem ); 我喜欢它的原因: 它减少了由类模板引入的噪音,std::vector<Lorem>变为Lorem::vector等。 它用作意图的声明-在上面的示例中,Lorem类旨在通过boost::shared_ptr向量进行引用计数并存储在向量中。 它允许更改实现-即,如果需要更改Lorem以便boost::intrusive_ptr在以后的阶段(通过)对引用计数进行计数,那么这将对代码产生最小的影响。 我认为它看起来“更漂亮”并且可以说更易于阅读。 我不喜欢的原因: 依赖有时会出现问题-例如,如果您想将a嵌入Lorem::vector到另一个类中,但只需要(或想要)转发声明的Lorem(而不是在其头文件中引入依赖),则最终必须使用显式类型(例如boost::shared_ptr<Lorem>而不是Lorem::ptr),这有点不一致。 这可能不是很常见,因此很难理解吗? 我尝试以我的编码风格为目标,因此对它有其他意见是很好的,这样我可以对自己的想法进行一些剖析。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.