typedef相关内容

为什么允许指向不完整类型的指针而不是不完整类型的变量?

为什么以下是合法的: typedef struct a aType;结构体{整数 x;a类型*b;}; 以及以下违法行为: void main(){typedef struct a aType;aType someVariable;结构体{整数 x;a类型*b;};} 我只是好奇,因为在每种情况下它都是前向引用,据我所知,至少对于函数和变量,前向引用是不合法的. 另外,C++ 的答案 ..
发布时间:2021-09-11 19:47:38 其他开发

是否允许将类模板类型参数定义为同名?

这似乎可以在 MSVC 中编译甚至按预期工作.但它是合法的 C++ 代码吗?它是否能保证执行此处预期的操作(即,将模板类型导出到同名下的结构体用户)? template 结构体枚举{//CS中有两个难题:缓存失效和命名事物.typedef EnumType EnumType;}; 解决方案 我认为类型定义是不允许的. 14.6.1 本地声明的名称 (N4296) 6 模板参数不应 ..
发布时间:2021-09-11 19:47:35 C/C++开发

以 `int typedef my_int;` 形式的 Typedef 声明

要将 my_int 声明为 int 的类型别名,我们可以这样写: typedef int my_int;//(1) 奇怪的是,以下似乎也定义了一个 int 别名: int typedef my_int;//(2) 我以前从未见过这样的语法.为什么有效? 解决方案 我阅读 C++ 参考是这样的:(1)和(2)是形式 的声明 specifiers-and-qualifiers de ..
发布时间:2021-09-11 19:47:32 C/C++开发

对 self 的 typedef 有什么影响吗?

我遇到了一些具有以下内容的 C++ 代码: typedef 请求请求; 这只是一个空操作还是这个 typedef 实际有影响,如果有,它有什么影响? 解决方案 您可以在第 7.1.3 节中阅读与 C++2003 ANSI ISO IEC 14882 2003 的 typedef 说明符相关的所有规则.在 7.1.3 中,2) 已经说过,如果名称已经指代某种类型,则允许标识 typede ..
发布时间:2021-09-11 19:47:29 C/C++开发

为什么 Windows API 中的所有内容都是 typedef 的?

更具体地说,为什么在许多情况下 typedef 会使用多个不同的名称,为什么 typedef 指针类型(有时会混淆逻辑)?> 例如: typedef const WCHAR *LPCWSTR, *PCWSTR; 这样做有什么意义? 解决方案 PCWSTR 和 LPCWSTR 之所以同时存在,是因为在古代是有区别的.LPCWSTR 曾经是 const WCHAR FAR *. ..
发布时间:2021-09-11 19:47:26 其他开发

“伪类型定义反模式"有什么理由吗?

我有一个相对复杂的泛型类型(比如 Map>),我在类内部使用它.(没有外部可见性;它只是一个实现细节.)我想将其隐藏在 typedef 中,但 Java 没有这样的功能. 昨天我重新发现了以下习语,并且很失望地得知它是 被认为是一种反模式. 我的课堂{/* “伪类型定义" */私有静态类 FooBarMap 扩展了 HashMap>{ };FooBarMap[] 地图;公共 FooBarM ..
发布时间:2021-09-11 19:47:23 Java开发

确认对 typedef 和 #define 的理解

有很多教程和问题可以解决这个问题.但我想在一个具体案例中确认我的理解.下面的两个不应该对编译器产生影响,即任何一个都是正确的.对? typedef _GridLayoutInputRepeater_根据; 和 #define _base _GridLayoutInputRepeater 同样,下面的内容应该没有区别? #define INT_32 uint32_t 和 typedef ..
发布时间:2021-09-11 19:47:21 C/C++开发

在 1 个地方声明类型同义词 &在多个文件中使用它

有没有办法在 C# 中做到这一点? 我想做类似的事情: using TypeASynonym = TypeA; 在一个地方,并且能够在多个 .cs 文件中使用 TypeASynonym 名称. 解决方案 我刚刚建议从类型继承新类型,我想为其应用同义词.并通过想要的同义词名称命名这个新类型. 好吧,这个继承技巧比什么都没有,但是!它不适用于 sealed 类型,我想为其指定 ..
发布时间:2021-09-11 19:47:15 C#/.NET

使用名称定义变量时#define 和 typedef 的区别

这是对这个问题的跟进这里.> typedef int foo;#define bar intint main() {布尔 foo = 真;//好的布尔栏 = 真;//失败} typedef 可以工作,但我很想知道这里的 typedef 是如何工作的? 关于 foo 的最终编译代码是什么样的?根据少数答案, typedef 是别名,允许对别名进行遮蔽.因此代码有效. 谁能解释一下? ..
发布时间:2021-09-11 19:47:12 C/C++开发

为什么我应该在 C++ 中使用 typedef?

假设我有: set>m_intset; 那行得通,但现在我将其更改为 typedef,最终得到两行代码: typedef set>SetInt;SetInt m_intset; 这样的 typedef 有什么好处?我是否正确使用它? 解决方案 使用 typedef 的一些优势: 简化:现在,每次您通常都需要 set>,你只需要输入 SetInt.如果您只使用一次集合,这没什么 ..
发布时间:2021-09-11 19:47:09 C/C++开发

C++:在 MSVC 中使用 __stdcall 回调 typedef

这个类型定义: typedef DWORD WINAPI(* CM_Open_DevNode_Key)(DWORD, DWORD, DWORD, DWORD, PHKEY, DWORD); 在 BorlandCpp 中编译得很好,但是,当我在 msvc 中编译它时,我必须删除 WINAPI(这只是 __stdcall 的别名): typedef DWORD(* CM_Open_DevNode ..
发布时间:2021-09-11 19:47:07 C/C++开发

C++ 概念精简版和类型别名声明

是否可以使用 typedef 或 using 在概念内声明类型别名,如概念 TS 所提议的那样?如果我尝试类似下面的 MWE,代码不会编译(使用 gcc 6.2.1 和 -fconcepts 开关) #include 模板概念 bool TestConcept (){返回要求(T t){使用 V = T;std::is_integral::value;};}int main(){返回0;} ..
发布时间:2021-09-11 19:47:04 C/C++开发

在 C 中创建指向 Typedef 结构的 Typedef 指针

有一个关于 C 中 typedef 的问题. 我已经定义了结构: typedef struct Node {整数数据;结构节点 *nextptr;} 节点; 我将如何创建 typedef 指向 struct 节点的指针?? 谢谢! 解决方案 你可以同时 typedef 它们: typedef struct Node {整数数据;结构节点 *nextptr;} 节点, *n ..
发布时间:2021-09-11 19:47:01 其他开发

禁用 typedef 之间的隐式转换

在 C++11 中,是否有一种干净的方法来禁用 typedef 之间的隐式转换,或者您是否必须做一些讨厌的事情,例如将您的 int 包装在一个类中并定义和删除各种运算符? typedef int Foo;typedef int Bar;富富(1);酒吧酒吧(2);酒吧 = foo;//隐式转换! 解决方案 C++ 标准说: 7.1.3 typedef 说明符 使用 typedef ..
发布时间:2021-09-11 19:46:58 C/C++开发

C 中的运行时条件 typedef

我知道这个问题有一个 C++ 版本,但是我使用的是标准 typedef 而不是模板. 我编写了一个可以处理 16 位 wav 文件的程序.它通过将每个样本加载到一个短片中来做到这一点.然后程序对short 执行算术运算. 我现在正在修改程序,以便它可以同时使用 16 位和 32 位 wav.我希望做一个有条件的 typedef,即对 16 位使用 short,对 32 位使用 int. ..
发布时间:2021-09-11 19:46:55 其他开发

在 typedef 声明中使用逗号?

此声明是否符合 C99/C11 标准? typedef struct 元素 {字符*数据;结构元素*下一个;} 元素,*列表,元素[5]; 我找不到它在标准中工作的原因. 解决方案 是的,它符合标准.typedef 声明类似于普通声明,除了它们声明的标识符成为对象类型的别名,如果声明中没有 typedef. 那么一会儿 int 整数,*pointer_to_integer; ..
发布时间:2021-09-11 19:46:51 其他开发

如何在 .h 中转发 typedef 结构

我有预处理器.h #define MAX_FILES 15结构预处理器{FILE fileVector[MAX_FILES];int currentFile;};typedef struct Preprocessor Prepro;void Prepro_init(Prepro* p) {(*p).currentFile = 0;} 那时我意识到我必须将声明与定义分开.所以我创建了 Prepr ..
发布时间:2021-09-11 19:46:49 其他开发

如何在没有外部库的情况下在 C++(11) 中创建强类型定义?

所以,我知道您可以使用以下别名为类型设置别名: typedef int *intPtr 但是 C++ 编译器无法区分它们: typedef int footypedef int bar富 x = 5;条 y = 7;int z = x + y;//检出 我知道 C++ 没有没有这些技巧(如何使用 C++11 风格的强类型定义创建新的原始类型?),但我发现上述技巧难以阅读和理解. 我发现的 ..
发布时间:2021-09-11 19:46:46 C/C++开发