.yuv源码解读.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
yuv源码解读

(1): 以从到下逐步来解读这个软件,由YUVviewer.cpp逐步向下进行拓展: 1.stdafx.h #if !defined(AFX_STDAFX_H__51FE175E_2896_4B95_82AC_E834A7145FC1__INCLUDED_) #define AFX_STDAFX_H__51FE175E_2896_4B95_82AC_E834A7145FC1__INCLUDED_ #if _MSC_VER 1000 #pragma once//这条预编译指令的作用是保证头文件只是被编译一次,在VC平台上使用,但是考虑到兼容性,使用还不是很多 #endif // _MSC_VER 1000 #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers #include afxwin.h // MFC core and standard components #include afxext.h // MFC extensions #include afxdtctl.h // MFC support for Internet Explorer 4 Common Controls #ifndef _AFX_NO_AFXCMN_SUPPORT #include afxcmn.h // MFC support for Windows Common Controls #endif // _AFX_NO_AFXCMN_SUPPORT //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif//此处有稍许的不解,为什么这里的#endif的颜色是灰色的呢?? // !defined(AFX_STDAFX_H__51FE175E_2896_4B95_82AC_E834A7145FC1__INCLUDED_) 这个函数库作为这个简易软件预编译的第一个库函数,作用是把一个project中使用的一些MFC标准头文件(如windows.h,afxwin.h)预先编译,以后该工程编译时,不在编译这部分头文件,仅仅使用预编译的结果。这样的好处就是能够加快编译的速度,节省时间和效率。 2.stdafx.h的实例化:这个预编译的文件是通过编译stdafx.cpp生成,以工程命名。预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。译器通过一个头文件stdafx.h来使用预编译头文件。另外,编译器会认为,所有在指令#include ”stdafx.h前的代码都是预编译的,因此,所有CPP实现文件的第一条语句都是:#include “stdafx.h” 3.#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif 这个预编译语句,是几乎每一个文件CPP都包含的语句。表示如果生成调试版本,要指定当前文件的名称。__FILE__是一个宏,在编译器过程中给它赋值为当前正在编译的文件名称。 VC.NET默认情况下使用预编译头(/Yu),不明白的在加入新.h文件后编译时总出现fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾的错误。解决方法是在include头文件的地方加上#include stdafx.h,或者打项目属性,找到“C/C++”文件夹,单击“预编译头”属性页。修改“创建/使用预编译头”属性为“不使用预编译头”。 4.#if条件编译 主要是进行编译时进行有选择性的挑选,注释掉一些指定的代码,以达到版本控制,防止对文件重复包含的功能。 #if表达式非零就对代码进行编译。 其他的一些预编译指令有: #define 宏定义 #undef 未定义宏 #include 文本包含 #ifdef 如果宏被定义就进行编译 #ifndef 如果宏未被定义就进行编译 #endif 结束编译块的控制 #if 表达式非零就对代码进行编译 #else 作为其他预处理的剩余选项进行编译 #elif 这是一种#else和#if的组合选项 //后面有例子的 #line 改变当前的行数和文件名称 #error 输出一个错误信息 #pragma 为编译程序提供非常规的控制流信息 5.#pragma once语句:#pragma语句也是我们应用预处理的一个重

文档评论(0)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档