草庐IT

c++ - 如何在 gcc 上为 x86_64 启用 __fp16 类型

__fp16float据类型是众所周知的C标准扩展,尤其是在ARM处理器上使用。我想在我的x86_64处理器上运行它们的IEEE版本。虽然我知道他们通常没有这些,但我可以使用“无符号短”存储(它们具有相同的对齐要求和存储空间)和(硬件)浮点运算来模拟它们。有没有办法在gcc中请求?我认为舍入可能有点“不正确”,但这对我来说没问题。如果这也适用于C++,那将是理想的。 最佳答案 我没有在gcc中找到这样做的方法(从gcc8.2.0开始)。至于clang,在6.0.0中,以下选项显示了一些成功:clang-cc1-fnative-hal

c++ - 如何在 gcc 上为 x86_64 启用 __fp16 类型

__fp16float据类型是众所周知的C标准扩展,尤其是在ARM处理器上使用。我想在我的x86_64处理器上运行它们的IEEE版本。虽然我知道他们通常没有这些,但我可以使用“无符号短”存储(它们具有相同的对齐要求和存储空间)和(硬件)浮点运算来模拟它们。有没有办法在gcc中请求?我认为舍入可能有点“不正确”,但这对我来说没问题。如果这也适用于C++,那将是理想的。 最佳答案 我没有在gcc中找到这样做的方法(从gcc8.2.0开始)。至于clang,在6.0.0中,以下选项显示了一些成功:clang-cc1-fnative-hal

c++ - GCC/VS2008 : Different behaviour of function call when templated base class is derived from itself

以下代码适用于VisualStudio2008,但不适用于GCC/G++4.3.420090804。根据C++标准,哪种行为正确?templatestructA:A{};templatestructA{};structB:A{};templatevoidFunc(constA&a){}intmain(){Aa;//isderivedfromAFunc(a);//vs2008:ok,g++:ok//Comeau:okBb;//isderivedfromAFunc(b);//vs2008:ok,g++:error,nomatchingfunctionforcalltoFunc(B&)//C

c++ - GCC/VS2008 : Different behaviour of function call when templated base class is derived from itself

以下代码适用于VisualStudio2008,但不适用于GCC/G++4.3.420090804。根据C++标准,哪种行为正确?templatestructA:A{};templatestructA{};structB:A{};templatevoidFunc(constA&a){}intmain(){Aa;//isderivedfromAFunc(a);//vs2008:ok,g++:ok//Comeau:okBb;//isderivedfromAFunc(b);//vs2008:ok,g++:error,nomatchingfunctionforcalltoFunc(B&)//C

c++ - 为什么 GCC 为 0.0/0.0 产生 -nan 和 clang 和 intel 产生 +nan?

当我调试代码时,我发现GCC和Clang都为0.0/0.0产生nan,这是我所期望的,但GCC产生的nan将符号位设置为1,而Clang将其设置为0(如果我没记错的话,与ICC一致)。现在显然这两种形式都是允许的,但我一直想知道为什么0.0/0.0会使GCC输出“否定”结果(打印它会给出-nan),并且-(0.0/0.0)给出“肯定”结果?更令人困惑的是,-0.0/0.0又是“负数”了。这是一个不断折叠的怪癖吗?编辑实际上,正是不断的折叠使它成为一个积极的nan。如果我在运行时强制计算,我会在GCC和Clang上得到负nanvolatilefloatzero=0.0;std::cout

c++ - 为什么 GCC 为 0.0/0.0 产生 -nan 和 clang 和 intel 产生 +nan?

当我调试代码时,我发现GCC和Clang都为0.0/0.0产生nan,这是我所期望的,但GCC产生的nan将符号位设置为1,而Clang将其设置为0(如果我没记错的话,与ICC一致)。现在显然这两种形式都是允许的,但我一直想知道为什么0.0/0.0会使GCC输出“否定”结果(打印它会给出-nan),并且-(0.0/0.0)给出“肯定”结果?更令人困惑的是,-0.0/0.0又是“负数”了。这是一个不断折叠的怪癖吗?编辑实际上,正是不断的折叠使它成为一个积极的nan。如果我在运行时强制计算,我会在GCC和Clang上得到负nanvolatilefloatzero=0.0;std::cout

c++ - 共享库与接口(interface)中的 STL 对象的 GCC 兼容性

我有一个带有STL对象的应用程序,用作插件编写器的C++接口(interface)的一部分。我知道最好的兼容性选择是使用C接口(interface),但目前不可行。我知道libstdc++中从GCC3.4到4.8的所有内容在ABI方面都高度兼容。因此,例如,如果我使用GCC4.1编译,而插件供应商编写使用GCC4.7编译的代码,那么在具有对应于GCC4.7或更高版本的libstdc++版本的平台上,除了极端情况外,所有情况都很好,提供的STL使用仅限于.so内部,并且外部.so接口(interface)使用纯C,遗憾的是我不是这种情况。所以,我很好奇关于用作插件接口(interface

c++ - 共享库与接口(interface)中的 STL 对象的 GCC 兼容性

我有一个带有STL对象的应用程序,用作插件编写器的C++接口(interface)的一部分。我知道最好的兼容性选择是使用C接口(interface),但目前不可行。我知道libstdc++中从GCC3.4到4.8的所有内容在ABI方面都高度兼容。因此,例如,如果我使用GCC4.1编译,而插件供应商编写使用GCC4.7编译的代码,那么在具有对应于GCC4.7或更高版本的libstdc++版本的平台上,除了极端情况外,所有情况都很好,提供的STL使用仅限于.so内部,并且外部.so接口(interface)使用纯C,遗憾的是我不是这种情况。所以,我很好奇关于用作插件接口(interface

c++ - 从 Visual Studio 解决方案生成 Make 文件(用于 GCC)

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我想在Linux中使用GCC编译我的VisualStudio解决方案,其中包含三个项目。该解决方案包含两个DLL项目和一个使用这些DLL的应用程序(.EXE)项目。源代码不包含任何Windows依赖项。如何将解决方案(包含3个项目)转换为可在Linux中使用GCC编译的文件。是否有任何工具可以将VisualStudio解决方案(项目)转换为文件/s。Vis

c++ - 从 Visual Studio 解决方案生成 Make 文件(用于 GCC)

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我想在Linux中使用GCC编译我的VisualStudio解决方案,其中包含三个项目。该解决方案包含两个DLL项目和一个使用这些DLL的应用程序(.EXE)项目。源代码不包含任何Windows依赖项。如何将解决方案(包含3个项目)转换为可在Linux中使用GCC编译的文件。是否有任何工具可以将VisualStudio解决方案(项目)转换为文件/s。Vis