comdef.h的神秘包含

时间:2018-06-21 01:04:52

标签: c++ macros include-path

在我的项目中,由于RNFetchBlob.fs.readFile(image.path, 'base64').then(data => //upload here );的定义不明确,导致出现一些编译错误C2872,在我设置-Include之后,输出显示byte是由于包含的文件:

  

C:\ Program Files(x86)\ Microsoft Visual   Studio \ 2017 \ Professional \ VC \ Tools \ MSVC \ 14.12.25827 \ include \ comdef.h

来自我的C2872文件之一。

但是,myado.h中的任何地方都没有这样的包含,为什么包含它?

myado.h做了这样的事情:

myado.h

,这里#import "C:/Program Files/Common Files/System/ado/msado15.dll" rename("EOF", "adoEOF") rename("BOF", "adoBOF") #include <icrsint.h> // ADO C/C++ Record Binding Definitions #define TESTHR(x) if FAILED(x) _com_issue_error(x) 是在

中定义的宏
  

c:\ Program Files(x86)\ Windows   套件\ 10 \ Include \ 10.0.16299.0 \ shared \ winerror.h

FAILED

中定义
  

c:\ Program Files(x86)\ Microsoft Visual   Studio \ 2017 \ Professional \ VC \ Tools \ MSVC \ 14.12.25827 \ include \ comutil.h

这是原因吗?

但是如果是这种情况,由于marco的使用情况,头文件如何包含在内?

或者,C ++编译器Visual Studio如何识别宏定义?

1 个答案:

答案 0 :(得分:2)

所有功劳归功于Ken White。

编译后,由于#import "C:/Program Files/Common Files/System/ado/msado15.dll" rename("EOF", "adoEOF") rename("BOF", "adoBOF")

,将在项目的msado15.tlh文件夹下生成一个Debug,该文件夹的开头为:

// Created by Microsoft (R) C/C++ Compiler Version 14.12.25830.2 (dbe79e7e).
//
// c:\c20180411hp_cpp17_01\debug\msado15.tlh
//
// C++ source equivalent of type library C:/Program Files/Common Files/System/ado/msado15.dll
// compiler-generated file created 06/20/18 at 15:50:36 - DO NOT EDIT!

#pragma once
#pragma pack(push, 8)

#include <comdef.h>

,瞧!