xxxx.h头文件解析
来源:互联网 发布:java上传图片到tomcat 编辑:程序博客网 时间:2024/05/21 08:52
#ifndef __WINMEDIC_H__#define __WINMEDIC_H__#include <windows.h>#ifdef __cplusplusextern "C" {#endif// __cplusplusvoid xxxxx_DisplayInit(DWORD ScrWidth, DWORD ScrHeight, unsigned char* pDrawAddr);void xxxxx_DrawBootPic();void xxxxx_DrawProgressBar(unsigned int Pos);// void Winmedic_AutoProgressBarStart();#ifdef __cplusplus}#endif// __cplusplus#endif
首先分析
extern "C"
1.扩大作用域
extern修饰函数声明。从本质上来讲,变量和函数没有区别。函数名是指向函数二进制块开头处的指针。如果文件a.c需要引用b.c中的函数,比如在b.c中原型是int fun(int mu),那么就可以在a.c中声明extern int fun(int mu),然后就能使用fun来做任何事情。就像变量的声明一样,extern int fun(int mu)可以放在a.c中任何地方,而不一定非要放在a.c的文件作用域的范围中。对其他模块中函数的引用,最常用的方法是包含这些函数声明的头文件。使用extern和包含头文件来引用函数有什么区别呢?extern的引用方式比包含头文件要简洁得多!extern的使用方法是直截了当的,想引用哪个函数就用extern声明哪个函数。这大概是KISS原则的一种体现吧!这样做的一个明显的好处是,会加速程序的编译(确切的说是预处理)的过程,节省时间。
2.按照C的方式编译和连接
即无重载,编译时不会包含函数名、函数参数数量及类型信息,这样外部文件可以找到同名文件
未加extern “C”声明时的编译方式。
首先看看C++中对类似C的函数是怎样编译的。 作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为: voidfoo( int x, int y ); 该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。_foo_int_int这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。例如,在C++中,函数void foo( int x, int y )与void foo( int x, float y )编译生成的符号是不相同的,后者为_foo_int_float。 同样地,C++中的变量除支持局部变量外,还支持类成员变量和全局变量。用户所编写程序的类成员变量可能与全局变量同名,我们以"."来区分。而本质上,编译器在进行编译时,与函数的处理相似,也为类中的变量取了一个独一无二的名字,这个名字与用户程序中同名的全局变量名字不同。#include <windows.h>
WINDOWS.H是主要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是: WINDEF.H 基本型态定义。 WINNT.H 支援Unicode的型态定义。 WINBASE.H Kernel函数。 WINUSER.H 使用者界面函数。 WINGDI.H 图形装置界面函数。 这些头文件定义了Windows的所有资料型态、函数调用、资料结构和常数识别字,它们是Windows文件中的一个重要部分。
void xxxxx_DisplayInit(DWORD ScrWidth, DWORD ScrHeight, unsigned char* pDrawAddr);void xxxxx_DrawBootPic();void xxxxx_DrawProgressBar(unsigned int Pos);这三个依次为初始化程序,开机图片,开机进度条,还有一个进度条初始化的被屏蔽了
- xxxx.h头文件解析
- stdafx.h头文件解析
- string.h头文件解析
- time.h头文件解析
- stm32f10x.h 头文件解析
- linux内核头文件 cdev.h 解析
- C#中如何使用头文件(xxxx.h),以及如何将头文件编译成动态链接库(DLL)
- xxxx.c文件解析
- 《cuda by example》 book.h 头文件解析
- 《cuda by example》 book.h 头文件解析(转)
- linux内核头文件kdev_t.h 宏定义解析
- stdarg.h头文件中va_start va_arg va_end解析
- IOS引用三方framewrok的头文件出现'xxxxx/xxxx.h' file not found问题解决方法
- IOS引用三方framewrok的头文件出现'xxxxx/xxxx.h' file not found问题解决方法
- conio.h头文件
- stdlib.h头文件
- 头文件time.h
- stdAfx.h头文件
- OPENFILENAME 结构详解
- 从JVM内存管理的角度谈谈JAVA类的静态方法和静态属性
- 值得关注的博客和网站
- IOS Xcode 4.4 App上传到Itunes Connect
- 加密锁十宗罪
- xxxx.h头文件解析
- Python之——PY文件中支持中文字符
- 往事如风
- 日语的美食佳肴与饮品
- java中关于replaceAll和appendReplacement的笔记
- 正则表达式标志
- nginx访问php页面出现No input file specified.
- 开启apache的url rewrite模块
- p,&p,*p的区别