草庐IT

typedeffing

全部标签

linux - Linux内核中的 "typedef __u16 __bitwise __le16;"是什么意思?

typedef__u16__bitwise__le16;在Linux内核中是什么意思?其实,这里的“乐”是什么意思?我隐约看出这是一个unsigned16bitint?感谢您的帮助。 最佳答案 我发现(source)和that类型标识符以下类型标识符对应于u16、u32和u64类型,除了它们是用按位属性定义的,该属性用于限制它们作为整数使用。稀疏实用程序使用按位属性来确保在对变量执行其他(不安全)操作之前将变量转换为本地处理器类型。包含linux/kernel.h头文件后,以下类型可用于endian因变量。__le16__le32_

c++ - 在编译时检测 typedef(模板元编程)

我目前正在做一些模板元编程。就我而言,我可以处理任何“可迭代”类型,即typedeffooconst_iterator以相同方式存在的任何类型。我试图为此使用新的C++11模板元编程,但是我找不到检测某个类型是否丢失的方法。因为我还需要根据其他特征打开/关闭其他模板特化,所以我目前正在使用带有两个参数的模板,第二个是通过std::enable_if生成的。这是我目前正在做的事情:templatestructFoo{};//defaultcaseisinvalidtemplatestructFoo::value>::type>{voiddo_stuff(){...}};templates

c++ - 在编译时检测 typedef(模板元编程)

我目前正在做一些模板元编程。就我而言,我可以处理任何“可迭代”类型,即typedeffooconst_iterator以相同方式存在的任何类型。我试图为此使用新的C++11模板元编程,但是我找不到检测某个类型是否丢失的方法。因为我还需要根据其他特征打开/关闭其他模板特化,所以我目前正在使用带有两个参数的模板,第二个是通过std::enable_if生成的。这是我目前正在做的事情:templatestructFoo{};//defaultcaseisinvalidtemplatestructFoo::value>::type>{voiddo_stuff(){...}};templates

c++ - 从实例访问 typedef

和STL容器一样,为什么我们不能从类实例访问类内部的typedef?对此有什么特别的见解吗?当value_type是模板参数时,如果不需要像vector::value_type那样指定模板参数,它可以帮助编写更通用的代码例子:classT{public:typedefintvalue_type;value_typei;};Tt;T::value_typei;//okt.value_typei;//won'twork 最佳答案 答案是先使用decltype获取类。例如,decltype(t)::value_type需要C++11。引用

c++ - 从实例访问 typedef

和STL容器一样,为什么我们不能从类实例访问类内部的typedef?对此有什么特别的见解吗?当value_type是模板参数时,如果不需要像vector::value_type那样指定模板参数,它可以帮助编写更通用的代码例子:classT{public:typedefintvalue_type;value_typei;};Tt;T::value_typei;//okt.value_typei;//won'twork 最佳答案 答案是先使用decltype获取类。例如,decltype(t)::value_type需要C++11。引用

c++ - 在 typedef 上使用 sizeof 而不是局部变量

就像这个例子一样(在C中):typedefinttype;intmain(){chartype;printf("sizeof(type)==%zu\n",sizeof(type));//Outputs1}输出总是局部变量type的大小。当C++不再需要在每次使用结构之前编写struct时,它仍然保留了struct{type}语法并引入了别名(class{type})以显式引用结构或类。示例(在C++中):structtype{intm;};intmain(){chartype;printf("sizeof(type)==%u\n",sizeof(type));//Outputs1pri

c++ - 在 typedef 上使用 sizeof 而不是局部变量

就像这个例子一样(在C中):typedefinttype;intmain(){chartype;printf("sizeof(type)==%zu\n",sizeof(type));//Outputs1}输出总是局部变量type的大小。当C++不再需要在每次使用结构之前编写struct时,它仍然保留了struct{type}语法并引入了别名(class{type})以显式引用结构或类。示例(在C++中):structtype{intm;};intmain(){chartype;printf("sizeof(type)==%u\n",sizeof(type));//Outputs1pri

c++ - typedef'ing enum 不会使 enum-values 可见

我有一个类,其中有一个枚举,定义如下:classX{public:enumDirection{DIR_LEFT,DIR_RIGHT};};现在我希望在另一个类中重用这个枚举,如下所示:classY{public:typedefX::DirectionDirection;};正如预期的那样,使用Y::Direction可以正常工作,例如:voidmyFunction(Y::Directiondir){}但枚举中的值似乎没有与typedef一起“复制”。如果我编写以下内容,则会出现编译错误:myFunction(Y::DIR_LEFT);相反,我不得不再次引用枚举的原始位置,像这样:myF

c++ - typedef'ing enum 不会使 enum-values 可见

我有一个类,其中有一个枚举,定义如下:classX{public:enumDirection{DIR_LEFT,DIR_RIGHT};};现在我希望在另一个类中重用这个枚举,如下所示:classY{public:typedefX::DirectionDirection;};正如预期的那样,使用Y::Direction可以正常工作,例如:voidmyFunction(Y::Directiondir){}但枚举中的值似乎没有与typedef一起“复制”。如果我编写以下内容,则会出现编译错误:myFunction(Y::DIR_LEFT);相反,我不得不再次引用枚举的原始位置,像这样:myF

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是