C、C++
青青小禾
这个作者很懒,什么都没留下…
展开
-
extern "C"的用法解析
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处转载 2014-10-29 10:44:33 · 314 阅读 · 0 评论 -
pragma comment的使用 pragma预处理指令详解
#pragma comment( comment-type [,"commentstring"] )该宏放置一个注释到对象文件或者可执行文件。comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。commentstring是一个提供为comment-type提供附加信息的字符串,Remarks:1、compiler:放转载 2015-04-10 16:05:48 · 349 阅读 · 0 评论 -
深入浅出 mfc Command Routing 命令传递
MFC.cpp#include "stdafx.h" #include "MY.h"extern CMyWinApp theApp;extern void printlpEntries(AFX_MSGMAP_ENTRY *lpEntry);BOOL CCmdTarget::OnCmdMsg(UINT nID,int nCode){ AFX_MSGMAP *pMess原创 2015-01-03 19:40:20 · 412 阅读 · 0 评论 -
VC的「附加依赖项」、「库目录」和「包含目录」分别有什么用?
包含目录:#include 中headerfile.h的搜索目录。如果有XXX.h找不到,设置这个目录可以解决。附加依赖项:C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,*.cpp,*.cc,*.c会被打包成一个.lib文件,这样可以保护源代码。所以,要使用一个库,除了要include他的头文件以外,还要在链接过程中把lib加进去。这个就是在附转载 2015-02-07 19:20:43 · 475 阅读 · 0 评论 -
深入浅出MFC Message Mapping 消息映射
stdafx// stdafx.h : 标准系统包含文件的包含文件,// 或是经常使用但不常更改的// 特定于项目的包含文件//#pragma once#include "targetver.h"#include #include #include #include using namespace std;mfc.h#include "afxmsg_.h"#原创 2014-12-31 11:01:38 · 496 阅读 · 0 评论 -
深入浅出 MFC Dynamic Creation 动态创建
MFC.H#pragma once#define BOOL int #define TRUE 1#define FALSE 0#define LPCSTR LPSTRtypedef char* LPSTR;#define UINT int#define PASCAL _stdcall class CObject;st原创 2014-12-28 19:42:43 · 674 阅读 · 0 评论 -
深入浅出MFC DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC 宏 模拟代码
MFC.h#pragma once#define BOOL int #define TRUE 1#define FALSE 0#define LPCSTR LPSTRtypedef char* LPSTR;#define UINT int#define PASCAL _stdcall class CObject;struct原创 2014-12-28 11:48:59 · 1036 阅读 · 0 评论 -
C++中虚函数工作原理和(虚)继承类的内存占用大小计算
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7883531一、虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数。典型情况下,这一信息具有一种被称为 vptr(virtual table pointer,虚函数表指针)的指针的形式。vptr 指向一转载 2014-12-26 15:35:30 · 336 阅读 · 0 评论 -
c++动态联编与静态联编
摘要】:本文阐述了静态联编和动态联编的概念和区别,通过具体实例分析了实现动态联编的条件,指出了虚函数是实现动态联编的基础。【关键词】:静态联编;动态联编;虚函数在C++中,联编是指一个计算机程序的不同部分彼此关联的过程。按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编。 1. 静态联编静态联编是指联编工作在编译阶段完成的,这种转载 2014-12-26 12:21:53 · 329 阅读 · 0 评论 -
隐藏和覆盖 C++
我可以给你说说我的理解 我认为隐藏和覆盖的区别主要体现在 多态上举个例子 #include#includeusing namespace std;class A{ public : A(){} void f(){cout<<'a'<<endl;} virtual void g(){cout<<"invoke aa转载 2014-12-26 11:14:04 · 352 阅读 · 0 评论 -
为什么默认都要包含stdafx.h这个文件,它的作用是什么?
Standard Application Fram Extend 没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。 Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。 为避免这转载 2014-12-25 16:59:57 · 2252 阅读 · 0 评论 -
深入浅出mfc “fatal error LNK1561: 必须定义入口点”解决方法
自学MFC在 Visual Studio 2010 里面,建立了一个空项目。添加了一个 Hello.cpp 和 Hello.h然后,编译的时候,报错:“fatal error LNK1561: 必须定义入口点”网上找了许久,发现一个解决方法。解决方案上,右键->属性->链接器->高级->入口点,设置成:WinMainCRTStartup转载 2015-01-06 23:30:51 · 1288 阅读 · 1 评论 -
堆 栈 大小端
高地址 低地址 堆 栈原创 2014-11-02 22:19:26 · 374 阅读 · 0 评论 -
struct 内存对齐规则
struct 内存对齐规则1 确定数据成员的offset地址 A-----基本数据类型(不包括数组/struct/class/uinon),起始offset地址,规律如下,sizeof(atom_type)*N (N=0,1,2,3...) 例子:char 0,1,2,3... int 0,4,8,12... double 0,8,16,24... B-原创 2014-11-04 13:20:49 · 487 阅读 · 0 评论 -
struct/class/union内存对齐原则
struct/class以及union内存对齐四个原则:1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节, 则要从4的整数倍地址开始存储),基本类型不包括struct/转载 2014-11-03 23:21:49 · 437 阅读 · 0 评论 -
va_start和va_end的使用
介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(...);void foo(parm_list,...);这种方式和我们以前认识的不大一样,但我们要记住这是C中一种传参的形式,在后面我们就会用到它。2.函数参数的传递原理转载 2014-11-02 21:38:54 · 402 阅读 · 0 评论 -
静态库 lib的生成和使用 Visual C++ 6.0
新建一个Win32 Static Library 工程,工程名为Myfunc在弹出的步骤1窗口中,可以选择使用预编译的头文件或不选,这里不选择新建一个func.h,代码;新建一个func.cpp代码编译并建立 在debug目录里会生成一个Myfunc.lib文件,把该文件移到\Microsoft原创 2014-10-29 17:29:43 · 508 阅读 · 0 评论 -
Activex、OLE、COM、OCX、DLL之间的区别(转)
熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的学术定义转载 2015-09-12 15:17:52 · 1269 阅读 · 0 评论