gpt4 book ai didi

c - VS 2015 C 头错误 C2039 : 'int_least8_t' : is not a member of '` global namespace''

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:45 29 4
gpt4 key购买 nike

在尝试在 Windows 10 中编译 DOSBox SVN Daum 时,我遇到了与 header 相关的问题,这对于 VS2015 来说显然是新问题。示例:

Severity    Code    Description Project File    Line    Suppression State
Error (active) the global scope has no "int_least8_t" dosbox c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cstdint 23
Error C2039 'int_least8_t': is not a member of '`global namespace'' dosbox C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cstdint 23

我的搜索告诉我这种问题已经发生在周围的项目中,但我无法修复它。

特别是,我阅读了 VisualStudio 2015 RC Issue with Includeshttps://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/ ,然后将AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props的内容改成:

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets">
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<IncludePath>D:\dev\include;$(UniversalCRT_IncludePath);$(IncludePath)</IncludePath>
<LibraryPath>D:\dev\lib;$(UniversalCRT_LibraryPath_x86);$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup />
<ItemGroup />
</Project>

虽然运气不好。 :(

图片:

VC++ Directories VC++ standard-header-related compilation errors

我远不是一个经验丰富的 C 程序员。谁能告诉我缺少什么?谢谢!

最佳答案

我在另一个程序上遇到了同样的问题,在查看了包含的内容后,我终于解决了它。

如果您查看最近的 Visual Studio 中的典型 cstdint,您会注意到一个包含是 stdint.h。这是存在各种类型的实际定义的地方。 cstdint 所做的是将定义导出为 std 命名空间的成员。

但是,这里显示的是,虽然带有 intXX_t 的第一行编译正常,但 int_least_xx_t 却没有。这是因为它读取了错误的 stdint.h 文件,该文件没有一些所需的定义。该文件是由那些想在 MSVC 支持之前使用命名大小的人编写的(他们随 C99 一起提供,MSVC 从未真正支持过,然后在 C++11 中,当时 MSVC 提供了支持)。

因为他们只需要确切的类型,所以他们没有为其他类型编写定义。既然 MSVC 支持了,就不需要这个兼容文件了。但是,由于项目文件未更新,编译器会找到错误的兼容性 header 而不是正确的 header ,从而导致此错误。

有两种方法可以解决这个问题:更改包含文件夹的顺序以便它获得您想要的文件夹,或者删除错误的 stdint.h 文件。它很容易找到,因为您可以使用 Visual Studio 打开 #include 文件。对于您的情况,该文件位于 src/platform/visualc/ 目录中。

附录:这是我的错误stdint.h文件

#pragma once

/* a minimal set of C99 types for use with MSVC */

typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef __int64 int64_t;

typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;

关于c - VS 2015 C 头错误 C2039 : 'int_least8_t' : is not a member of '` global namespace'',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41051840/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com