我决定尝试STL并使用vector
而不是定制的可增长数组类。问题是我无法编译任何东西。如果我做这样的事情:
#include "stdafx.h"
#include <vector>
std::vector<PITEMID_CHILD> APIDL;
我收到一堆类似于以下内容的消息:
1> c:\ program files(x86)\ Microsoft Visual Studio \ 2017 \ enterprise \ vc \ tools \ msvc \ 14.16.27023 \ include \ cstdint(23):错误C2039:'int_least8_t':不是成员“`全局命名空间”
如果我改成这个:
#include <vector>
#include "stdafx.h"
std::vector<PITEMID_CHILD> APIDL;
我明白了:
1> x:\ win32testing \ vectortest \ vectortest.cpp(4):错误C2039:'vector':不是'std'的成员
在stdafx.h里面是:
#pragma once
#include <windows.h>
#include "targetver.h"
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <shlobj.h>
#include <exdisp.h>
#include <shellapi.h>
#include <shlwapi.h>
#include <atlbase.h>
#include <atlalloc.h>
#include <CommonControls.h>
// reference additional headers your program requires here
#include <CommCtrl.h>
知道发生了什么吗?
答案 0 :(得分:0)
除非未选中编译选项
#include "stdafx.h"
(默认情况下),否则Visual C ++不会在源文件中的/Yu'stdafx.h'
之前编译任何内容。它假定源中直至该行(包括该行)的所有代码均已编译。
最好的解决方案是摆脱预编译的标头。
对于您的C2039
错误,这似乎不是第std::vector<PITEMID_CHILD> APIDL;
行的结果。 int_least8_t
是cstdint
(stdint.h
)中定义的类型。看来您没有在项目中包含此头文件。