我有一个简短的问题。为什么OpenGL为标准类型(如int、unsignedint、char等)提供自己的数据类型?我是否必须使用它们而不是在C++数据类型中构建?例如OpenGL等价于unsignedint是GLuint并且对于c字符串有GLchar*而不是char*。 最佳答案 ForexampletheOpenGLequivalenttounsignedintisGLuint不,不是,这正是为什么在与OpenGL交互时应该使用OpenGL的数据类型。GLuint不“等同于”unsignedint。GLuint要求为32位大小。
是一样的吗?如果不是:有什么区别?如果是,那为什么需要这种类型? 最佳答案 uint32_t(或者C++11之前的编译器调用它)保证为32位无符号整数;unsignedint是编译器最喜欢调用unsignedint的任何无符号整数,只要它符合标准的要求(要求它的最小范围为0-65535)。像int一样,unsignedint通常是一个整数,对于当前架构来说可以快速操作(通常它适合一个寄存器),所以它可以在以下情况下使用需要一个“正常”的快速整数。uint32_t则在您需要精确宽度整数时使用,例如序列化到文件,或者当您需要该确切范围或
是一样的吗?如果不是:有什么区别?如果是,那为什么需要这种类型? 最佳答案 uint32_t(或者C++11之前的编译器调用它)保证为32位无符号整数;unsignedint是编译器最喜欢调用unsignedint的任何无符号整数,只要它符合标准的要求(要求它的最小范围为0-65535)。像int一样,unsignedint通常是一个整数,对于当前架构来说可以快速操作(通常它适合一个寄存器),所以它可以在以下情况下使用需要一个“正常”的快速整数。uint32_t则在您需要精确宽度整数时使用,例如序列化到文件,或者当您需要该确切范围或
给定程序:enumE:int{A,B,C};g++-ctest.cpp工作得很好。但是,clang++-ctest.cpp给出以下错误:test.cpp:1:6:error:ISOC++forbidsforwardreferencesto'enum'typesenumE:int^test.cpp:1:8:error:expectedunqualified-idenumE:int^2errorsgenerated.这些错误消息对我来说没有任何意义。我在这里看不到任何前向引用。 最佳答案 为枚举指定基础类型是C++11语言功能。要编译代
给定程序:enumE:int{A,B,C};g++-ctest.cpp工作得很好。但是,clang++-ctest.cpp给出以下错误:test.cpp:1:6:error:ISOC++forbidsforwardreferencesto'enum'typesenumE:int^test.cpp:1:8:error:expectedunqualified-idenumE:int^2errorsgenerated.这些错误消息对我来说没有任何意义。我在这里看不到任何前向引用。 最佳答案 为枚举指定基础类型是C++11语言功能。要编译代
-Wlong-long的原因是什么?gcc警告?来自gcc手册页:-Wlong-longWarniflonglongtypeisused.Thisisenabledbyeither-Wpedanticor-WtraditionalinISOC90andC++98modes.Toinhibitthewarningmessages,use-Wno-long-long.据我了解,longlong要求至少为64位(实际上它总是64位,至少在今天的编译器中是这样)。这不是ISOC90或C++98的情况,还是有其他不使用longlong的原因??我知道类型如int64_t和friend,但一些不太
-Wlong-long的原因是什么?gcc警告?来自gcc手册页:-Wlong-longWarniflonglongtypeisused.Thisisenabledbyeither-Wpedanticor-WtraditionalinISOC90andC++98modes.Toinhibitthewarningmessages,use-Wno-long-long.据我了解,longlong要求至少为64位(实际上它总是64位,至少在今天的编译器中是这样)。这不是ISOC90或C++98的情况,还是有其他不使用longlong的原因??我知道类型如int64_t和friend,但一些不太
在C99中,我包含stdint.h,这给了我UINT32_MAX以及uint32_t数据类型。但是,在C++中,UINT32_MAX被定义了。我可以在包含stdint.h之前定义__STDC_LIMIT_MACROS,但如果有人在包含stdint.h自己之后包含我的header,这将不起作用。那么在C++中,找出uint32_t中可表示的最大值的标准方法是什么? 最佳答案 不确定uint32_t,butforfundamentaltypes(bool,char,signedchar,unsignedchar,wchar_t,shor
在C99中,我包含stdint.h,这给了我UINT32_MAX以及uint32_t数据类型。但是,在C++中,UINT32_MAX被定义了。我可以在包含stdint.h之前定义__STDC_LIMIT_MACROS,但如果有人在包含stdint.h自己之后包含我的header,这将不起作用。那么在C++中,找出uint32_t中可表示的最大值的标准方法是什么? 最佳答案 不确定uint32_t,butforfundamentaltypes(bool,char,signedchar,unsignedchar,wchar_t,shor
42asunsignedint很好地定义为“42U”。unsignedintfoo=42U;//yeah!我怎样才能写出“23”,以便清楚它是一个无符号短整型?unsignedshortbar=23;//booh!notclear!编辑,让问题的意思更清楚:templatevoiddoSomething(T){std::coutvoiddoSomething(unsignedint){std::coutvoiddoSomething(unsignedshort){std::cout 最佳答案 你不能。数字文字不能有short或uns