草庐IT

pseudo-typedef

全部标签

c++ - 最佳实践 : Should I create a typedef for byte in C or C++?

您更喜欢在代码中看到t_byte*(带有typedefunsignedchart_byte)或unsignedchar*之类的内容吗?我倾向于在自己的库中使用t_byte,但从未参与过采用这种方法的大型项目,我想知道其中的陷阱。 最佳答案 如果您使用的是C99或更新版本,您应该为此使用stdint.h。uint8_t,在这种情况下。C++直到C++11才得到这个头文件,称之为cstdint。旧版本的VisualC++不允许您在C++代码中使用C99的stdint.h,但几乎所有其他C++98编译器都允许,因此即使使用旧编译器,您也可

c++ - 将 shared_ptr 隐藏在 typedef 后面是一种好的风格吗?

我想减少代码中的一些视觉噪音并将shared_ptr隐藏在typedef后面,如下所示:typedefboost::shared_ptrSomeLongClassPtr;所以这个:voidfoo(constboost::shared_ptr&a,boost::shared_ptr&b);变成这样:voidfoo(constSomeLongClassPtr&a,SomeLongClassPtr&b);另一方面,我担心我会降低代码的明确性。哪种风格更好? 最佳答案 鉴于std::string本身就是一个typedef,我认为你很好。我自

C++:使用 auto 还是 typedef?

已结束。这个问题是off-topic.它目前不接受答案。想要改进这个问题?Updatethequestion所以它是on-topic堆栈溢出。关闭10年前。Improvethisquestion我不想在这里故意问一个主观的问题,但我没有其他人可以直接问这个......我正在尝试在我的团队中“以身作则”,在我编写的新代码中采用更现代的C++概念。我的同事对模板有点害羞,并且提示必须输入unique_ptr或shared_ptr而不仅仅是Foobar*在使用我最近创建的一些类时(工厂方法返回unique_ptrs,我使用shared_ptr将这些对象的列表存储在vector中)。他们扭了扭

c++ - 数组的 typedef 数组的 typedef

由于标题可能看起来很困惑,让我举个例子:typedefboolfoo[2];typedeffoobar[4];barwhat_am_i;所以,我认为what_am_i是[4][2]维数组,还是[2][4]维数组数组? 最佳答案 它是bool[4][2]你可以通过static_assert来验证:static_assert(std::is_same::value,"");static_assert(std::is_same::value,"");//failed 关于c++-数组的type

c++ - 在 typedef 和 new 中使用 typename 关键字

考虑这段代码,templatestructSample{typenameT::X*x;//declarepointertoT'sX};在上面的代码中,编译器需要关键字typename,以便消除模板中嵌套类型和嵌套值的歧义。这意味着,在没有typename关键字的情况下,编译器会将其解释为T::X与x的乘积,T::X*x;//multiplyT::Xwithx所以在这种可能出现歧义的情况下,关键字typename变成necessity,以消除歧义。但是,上下文本身消除歧义的情况很少。othertopic讨论了基类和函数参数的上下文(尽管后者并没有消除歧义)。在这个话题中,我特别想讨论另外

c++ - const 成员函数和 typedef,C++

假设我们要通过typedef声明const成员函数:typedefintFC()const;typedefintF();structA{FCfc;//fine,wehave'intfc()const'constFf;//notfine,'const'isignored,sowehave'intf()'};由于const被忽略,程序编译得很好。为什么const被函数忽略?由于我们可以以这种方式形成const指针,我唯一能想到的就是“C遗产”。标准对此有什么说法吗? 最佳答案 C++14标准,[dcl.fct]pt。7:Theeffec

c++ - typedef int array[3] 和 typedef int(array)[3] 有什么区别?

我最近遇到了这种定义int数组类型的非正统方式:typedefint(array)[3];起初我以为它是一个函数指针数组,但后来我意识到*和()丢失了,所以通过查看我推断的代码类型数组是int[3]类型。我通常会将这种类型声明为:typedefintarray[3];除非我误认为它们不是同一个东西,否则以前一种方式这样做除了使它们看起来类似于函数指针之外还有什么好处? 最佳答案 Whatisthedifferencebetweentypedefintarray[3]andtypedefint(array)[3]?它们是一样的。在声明

c++ - typedef 结构中的下划线是什么意思?

我在看zmq的源码,偶然发现如下typedeftypedefstruct{unsignedchar_[32];}zmq_msg_t;我不明白这个定义中的下划线是什么意思。有人可以帮忙解释一下吗? 最佳答案 下划线(_)是有效的标识符,在这种情况下是结构成员的名称。它没有任何特殊意义,因此。引用C11,第§6.4.2.1章,标识符Anidentifierisasequenceofnondigitcharacters(includingtheunderscore_,thelowercaseanduppercaseLatinletters

c++ - 为什么 typedef 不能与 static 一起使用?

为什么typedef不能和static一起使用?比如下面的代码就是一个错误typedefstaticintINT2;使用typedef应该遵循哪些其他规则?还有哪些关键字不能与typedef一起使用?非常感谢! 最佳答案 typedef不声明变量的instance,它声明了一个类型(实际上是类型别名),static是您应用于实例而非类型的限定符,因此您可以在使用类型时使用static,但在定义类型时不能使用。像这样..typedefintint32;staticint32foo; 关于c

const 指针的 C++ typedef 解释

首先,示例代码:案例一:typedefchar*CHARS;typedefCHARSconstCPTR;//constantpointertochars文字替换CHARS变为:typedefchar*constCPTR;//stillaconstantpointertochars案例2:typedefchar*CHARS;typedefconstCHARSCPTR;//constantpointertochars文字替换CHARS变为:typedefconstchar*CPTR;//pointertoconstantchars在案例2中,在文本替换CHARS后,typedef的含义发生