1、首先,在代码文件头部使用#include来包含任何头文件(扩展名为.h或者.hpp的文件)都不会“产生”额外的函数。

我们可以说,包含一个头文件之后,该头文件内部已经定义的一些变量,宏,函数等等资源,将可以在后面的代码中可以直接拿来使用,比如,当我们包含process.h之后,就可以在代码中使用system()函数来调用系统控制台的命令,比如cls,、pause等等。

同理,包含了windows.h之后,在该文件中定义的一些资源我们可以直接使用,其中包括大部分的Win32 API函数,以及一些Win32宏。具体文件内容你可以找到“C:\Program Files\Microsoft Visual Studio\VC98\Include\WINDOWS.H”(假设你安装的是VC6,且装在C盘。安装其他版本或者安装在其他目录请以此类推),使用文本编辑器自行察看。

2、包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。

如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h,并将
WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。

3、__cplusplus与extern "C"   (2008-08-28 21:16)
分类: 单片机和C语言

__cplusplus与extern "C"

Microsoft-Specific Predefined Macros
__cplusplus Defined for C++ programs only.
上面的意思是说,如果是C++程序,就使用(即定义__cplusplus);

extern "C"{
而这句话,是指在下面的函数不使用的C++的名字修饰,而是用C的

使用上面语句大多出现在交叉C编译环境中,其原因是:
C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名.

__cplusplus与extern "C"的使用解决了C语言函数与C++函数之间的调用问题

The following code shows a header file which can be used by C and C++ client applications:
// MyCFuncs.h
#ifdef __cplusplus
extern "C" { // only need to export C interface if
// used by C++ source code
#endif

__declspec( dllimport ) void MyCFunc();
__declspec( dllimport ) void AnotherCFunc();

#ifdef __cplusplus
}
#endif

上面的程序可解释为:

如果在编译时定义了__cplusplus
那么编译器编译的代码文本就是:

extern "C" {
    int sum(int num1,int num2);    
    int mult(int num1,int num2);
                   }

如果编译时没有定义__cplusplus

就是:

int sum(int num1,int num2);    
    int mult(int num1,int num2);

 

Win32:引用头文件的更多相关文章

  1. 关于Dev-C++一种引用头文件<iostream>问题(暴力解决)

    问题情况如下,因个人水平有限,不知道具体原因是啥,当引用头文件<iostream>时会出现如下问题,经排查,并不是头文件本身的问题,有可能是Dev哪一个文件被改动了,或者设置出了问题(前者 ...

  2. ASP.NET MVC 在子页中引用头文件

    在很多时候我们把网站公共的js.css文件放在模板页中,这样在具体的每一个页面里面就不需要单独引用. ASP.NET WebForm里面使用.site文件. 而在ASP.NET MVC 中使用了类似下 ...

  3. 使用CocoaPods,文档中出现引用头文件找不到的问题。

    现在很多人都会使用CocoaPods来管理自己使用的第三方开源代码,这两天我的工程中碰到了这样一个问题,当我使用CocoaPods来进行三方源码的引入,但是在实际的工程当中引入出现了这样一个问题,就是 ...

  4. C++----练习--引用头文件

    1.创建头文件和源文件 touch /tmp/tools.h touch /tmp/main.cpp 2.各文件的内容如下: tools.h #include<iostream> void ...

  5. Qt 引用头文件 QT_BEGIN_NAMESPACE QT_END_NAMESPACE

    Qt里面引入头文件的两种方式: 1. #include <QMdiArea> #include<QSplashScreen> 2. QT_BEGIN_NAMESPACE cla ...

  6. cocoaspod使用 引用头文件找不到

    使用cocoasPod做第三方类库管理非常方便,但是在使用的过程之中会遇到一些小问题!比如初次使用会遇到 引入类库,说找不到文件 target--build settings---user searc ...

  7. eclipse引用头文件报错问题-解决方法

    最近在做一个U-BOOT相关的项目,经过几天的折腾最终放弃使用VIM和一堆附加插件.最终的出的结论是对于中大型工程项目还是要启用一些专业的IDE比较稳妥,尽管VIM提供的各种插件累加在一起足以实现专业 ...

  8. 引用头文件顺序问题 error C2039

    建的WTL工程,用到CString和DataExchange 因为WTL和ATL都有对CString的定义 当先包含 atlstr.h 再包含 atlddx.h 时会出现以下错误 error C203 ...

  9. C语言 Include指令(引用头文件)

    #include "one.h" #include "two.h" int main(int argc, const char * argv[]) { one( ...

随机推荐

  1. iOS开发-xCode代码托管到GitHub

    xCode默认的是由源代码管理工作Git,Android Studio内置的也有,之前写过两篇关于Window托管Android代码到GitHub的文章,一直想写篇关于Mac上托管代码的到文章,今天终 ...

  2. 不要再使用JS框架了

    停止编写Javascript框架吧. Javascript框架就好像死亡和税收一样:终究不可避免它的存在.我确信如果我是那面墙上的一只苍蝇,每次有人开始一个新的网页项目时,第一个问题肯定是我们用的是哪 ...

  3. IOS之NSFileManager 和NSFileHandle

    在现阶手机app的临时缓存文件渐渐增多,在app开发中对于移动设备文件的操作越来越多,我们IOS中对于文件的操作主要涉及两个类NSFileManager 和NSFileHandle,下面我们就看看如何 ...

  4. android 上传图片

    public static String uploadPicture(String url, String uploadFile) {     String resultcode = "1& ...

  5. DateNavigator

    <Border BorderThickness="1,1,1,1" BorderBrush="Black" Grid.Column="1&quo ...

  6. 软件project(一)——宏观总结

    曾经看视频,看过去就忘.不想再这样子下去了,所以总结了好久.想让自己忘不了.这个过程花费时间有点长,可是假设让自己忘不了.一切都值了. 以下先来一张导图来总结一下<软件project>这门 ...

  7. 【nodejs】修改了下对股票表进行crud操作的代码

    表是这样的: id是自增长字段,code和name都是255位的varchar. 下面是主角app.js的代码: 'use strict'; var express=require('express' ...

  8. MVC应用积累

    1.Controller中的跳转 (1)直接Redirect后加(Controller/Action):Response.Redirect("/Home/Index"); (2)直 ...

  9. UITextView自适应高度

    - (float) heightForTextView: (UITextView *)textView WithText: (NSString *) strText{ float fPadding = ...

  10. PHP高级教程-Cookie

    PHP Cookie cookie 常用于识别用户. Cookie 是什么? cookie 常用于识别用户.cookie 是一种服务器留在用户计算机上的小文件.每当同一台计算机通过浏览器请求页面时,这 ...