![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 67
haoxingfengcrazy
学习是人生的一种方式
展开
-
C++,C#混合编码技术
本文提供了一个方法,让C++源码和C#源码一起编译链接成一个单一的Assembly。 由于C++提供了IJW方法,允许将旧有C++代码也编译成托管代码,因此这篇小文可以用极小的工作量来彻底解决所有C++遗留代码移植到.NET的问题。 这个方法,再加上前次的小文《您也使用托管C++吗?》,就可以把C++遗留代码移植到.NET的所有方法一网打尽了。 好了,言归正传。 假设一个很转载 2014-08-25 22:41:28 · 768 阅读 · 0 评论 -
main函数之前执行代码
main函数之前执行代码 有的时候,需要会遇到这样的一个情况,“想要在main或者WinMain函数执行前初始化我们的系统框架,和在之后释放我们的系统框架”, 如果这样,我们该怎么做呢?笔者今天放假,来公司继续解决昨天剩余的问题,然后调试exit函数的时候,会发现它会调用static void __cdecl doexit (int code, int quick,int retcalle转载 2013-06-24 22:14:19 · 2224 阅读 · 0 评论 -
汇编指令大全(有注释)
一、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI转载 2013-06-24 16:51:58 · 730 阅读 · 0 评论 -
C++中调用汇编的方法
1 引言 Visual C++ 是当今最流行的软件开发工具之一,它可以实现可视化编程和支持面向对象的编程技术。人们在开发的过程中将两种语言进行混合编程,这种方法使两种语言相互调用,进行参数传递,共享数据结构和数据信息,充分发挥了各种语言的特点和优势,大大提高了应用软件的效率。因此,正确掌握Visual C++与汇编语言的接口技术对软件开发是十分必要的。 2 Visual C++调转载 2013-06-24 16:28:10 · 1671 阅读 · 0 评论 -
C/C++函数调用约定
关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的。VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调用方式,在 DLL 导出函数中,为了跟 Windows API 保持一致,建议使用 __stdcall 方式。调用约定跟堆栈清除密切相关。如果写一个汇编函数,给 C/C++ 调用,在 __cde转载 2013-06-24 16:21:49 · 525 阅读 · 0 评论 -
C++中的重载、覆盖、隐藏机制
先讨论一下重载(Overload)的含义,在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载, 重载不关心函数的返回值类型。这里,“重载”是“重复”、“重叠”的意思。例如在同一可访问区内有:① double calculate(double);② double calculate(double转载 2013-06-24 08:52:14 · 1012 阅读 · 0 评论 -
关于std:auto_ptr std:shared_ptr std:unique_ptr
很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它。这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生成健壮的代码。本文阐述了如何正确运用auto_ptr来让你的代码更加安全——以及如何避免对auto_ptr危险但常见的误用,这些误用会引发间断性发作、难以诊断的bug。1.为什么称它为“自动”指针?auto_ptr只是众多可转载 2013-06-14 16:28:36 · 2425 阅读 · 0 评论 -
#include<iostream>和#include<iostream.h>的区别
区别在于:如果用了,则一定要引入命名空间,即"using namespace std;如果用了,则不能引入命名空间,否则会引起编译错误,提示找不到命名空间.例程如下: //情况一:使用和命名空间 #include using namespace std; int main() { cout need to use nam转载 2013-06-24 08:38:17 · 1247 阅读 · 0 评论 -
Linux系统调用
目录:1. Linux系统调用原理2. 系统调用的实现3. Linux系统调用分类及列表4.系统调用、用户编程接口(API)、系统命令和内核函数的关系5. Linux系统调用实例6. Linux自定义系统调用1.系统调用原理系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的转载 2013-06-22 21:38:24 · 634 阅读 · 0 评论 -
static_cast、dynamic_cast reinterpret_cast和const_cast用法
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。stat转载 2013-06-24 08:34:41 · 492 阅读 · 0 评论 -
TS C++调用JAVA方法详解
本文主要http://public0821.iteye.com/blog/423941上的文章。转载 2013-06-22 16:16:51 · 839 阅读 · 0 评论 -
讲解如何在C/C++中调用Java的方法
Java跨平台的特性使Java越来越受开发人员的欢迎,但也往往会听到不少的抱怨:用Java开发的图形用户窗口界面每次在启动的时候都会跳出一个控制台窗口,这个控制台窗口让本来非常棒的界面失色不少。怎么能够让通过Java开发的GUI程序不弹出Java的控制台窗口呢?其实现在很多流行的开发环境例如JBuilder、Eclipse都是使用纯Java开发的集成环境。这些集成环境启动的时候并不会打开一转载 2013-06-22 16:13:06 · 893 阅读 · 0 评论 -
在VS2008下编译VC6.0程序时,更改界面为新的风格
当用Visual Studio 2005/2008创建MFC程序时,如果选择Unicode编码方式则程序自动具有XP控件风格;如果选择多字符集编码方式,则需要如下操作:将下面的内容保存到一个文件名为***.exe.manifest的文件中,放到res目录下,文本文件即可,***可以使用你的程序的名称或者任意。name="Wiegand.Application转载 2013-06-18 20:35:35 · 1509 阅读 · 0 评论 -
基于Scintilla开发的MFC多文档源代码编辑器CodeEditor(二)
一些功能的实现: (1 ) 添加 文件打开对话框: 在自己的view 类中处理菜单的打开消息: [cpp] view plaincopyprint?// TODO: 在此添加命令处理程序代码 CFileDialog fDlg(TRUE); if (IDOK==fDlg.DoModal()) { m_转载 2013-06-18 20:31:15 · 2096 阅读 · 0 评论 -
C++基本功和 Design Pattern系列(10-11)
======================================================大家请把我的文章当参考,详细内容 还请参照 权威书籍如果文中有错误和遗漏, 请指出,Aear会尽力更正,谢谢!Aear Blog: http://blog.sina.com.cn/u/1261532101==================================转载 2013-06-18 14:16:33 · 624 阅读 · 0 评论 -
C++基本功和 Design Pattern系列(4-6)
====================================================== 大家请把我的文章当参考,详细内容 还请参照 权威书籍 programming language>如果文中有错误和遗漏, 请指出,Aear会尽力更正, 谢谢!======================================================最转载 2013-06-18 14:09:43 · 707 阅读 · 0 评论 -
在main函数之前调用函数,以及对设计的作用
#include #include static void before(void) __attribute__ ((constructor));static void after(void) __attribute__ ((destructor));static void middle(void);static void before(){转载 2013-06-24 22:33:44 · 810 阅读 · 0 评论 -
java c++混合编程
具体参照: http://www.cnblogs.com/icejoywoo/archive/2012/02/22/2363709.html http://www.cnblogs.com/icejoywoo/archive/2012/02/24/2367116.html转载 2013-06-25 10:58:56 · 926 阅读 · 0 评论 -
VC UI 界面库
http://cid-47027e68f36cbaf5.spaces.live.com/blog/cns!47027E68F36CBAF5!308.entryMFC界面库: GUIToolkit 和 SYGUI官网:http://www.beyondata.com/GUIToolkithttp://www.codeproject.com/KB/library/g转载 2014-07-21 16:38:15 · 1911 阅读 · 0 评论 -
使用VS2010开发ActiveX(MFC)控件(3)——添加接口及WEB调用
上一节实现了控件在页面中的加载及界面显示,这一节开始在上一节的基础上添加接口供WEB调用。手动在CMainDlg.h中添加一方法:public: LONG SetParam(LPCTSTR lpParam);在CMainDlg.cpp中为:LONG CMainDlg::SetParam( LPCTSTR lpParam ){ C转载 2014-04-28 21:15:13 · 4408 阅读 · 0 评论 -
使用VS2010开发ActiveX(MFC)控件(2)——界面显示
前一篇已经生成了基本框架代码,现在开始设计界面及WEB调用。在资源视图中新建一个对话框资源,去掉上边的“确定”和“取消”按钮,然后修改对话框属性:Border改为None,Control改为Ture,ID改为IDD_MAIN_DIALOG,Style改为Child,System改为False,Visible改为True,然后在对话框中双击,为对话框添加一个类,如下图:点击“转载 2014-04-28 21:14:11 · 3971 阅读 · 3 评论 -
使用VS2010开发ActiveX(MFC)控件(1)——创建
VS2010开发ActiveX有两种方法,分别是MFC和ATL。MFC开过起来比较简单,但是最终生成的文件比较大,ATL是专门用来开发ActiveX的,但是相对比较难,必须知道很多原理机制和API。ActiveX是通过网络下载安装的,所以文件的大小就成了一个比较敏感的参数。咱先从MFC开发ActiveX开始吧。 这个Demo的最终效果是:当页面加载该控件后,显示控件界面(一个简转载 2014-04-28 21:12:55 · 1757 阅读 · 0 评论 -
学习c++的五十条忠告
1.把C++当成一门新的语言学习;2.看《Thinking In C++》,不要看《C++变成死相》;3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言转载 2013-09-12 16:40:30 · 741 阅读 · 0 评论 -
MarioTCP: Multi Libvent TCP Server 一个高性能的TCP服务器
MrioTCP,超级马里奥,顾名思义,他不仅高效,而且超级简易和好玩。同时他可以是一个很简洁的Linux C 开发学习工程。毫不夸张的说,如果全部掌握这一个工程,你会成为一个Linux C的牛人;当然,你也可以通过源码包的mario.c(maritcp服务器示例程序)来学习,可以很快入门上手进行Linux C开发。经过两个多月的测试(编写c++客户端测试及调优系统参数),测试结果得到单转载 2013-09-12 16:01:04 · 4167 阅读 · 2 评论 -
多态的内幕--(C++, C)语言两个版本
本文通过分析C++编译器生成的汇编代码,分析多态的机制。并实现了一个C语言版本。 在编译性语言里面,多态真的是一个伟大的发明。它可以现在写好代码,编译好,并且可以调用未来的代码。这多少有了点动态的感觉。很多人,也在脚本语言里面抱怨,为什么不提供多态的功能啊。脚本语言里面,一个函数参数,可以传递任何类型,甚至可以通过函数名的字符串调用函数,这样多态的作用就小了很多。对于面向对象来说转载 2013-07-05 16:29:43 · 563 阅读 · 0 评论 -
java设计模式--策略模式
当我们掌握了Java的语法,当我们了解了面向对象的封装、继承、多态等特性,当我们可以用Swing、Servlet、JSP技术构建桌面以及Web应用,不意味着我们可以写出面向对象的程序,不意味着我们可以很好的实现代码复用,弹性维护,不意味着我们可以实现在维护、扩展基础上的代码复用。一把刀,可以使你制敌于无形而于江湖扬名,也可以只是一把利刃而使你切菜平静。Java,就是这把刀,它的威力取决于你使用的方转载 2013-06-27 20:57:38 · 3634 阅读 · 0 评论 -
JAVA 与C++ 混合编程 Java中调用C/C++生成的DLL
一、 生成C的头文件 1. 编辑Main.java public class Main { public native static int getStrNum(byte str[], int strLen); } 2. 生成头文件 按win + r打开“运行”窗口,输入“cmd”,打开DOS控制台窗口。进入上面Main.java所在的目录中转载 2013-06-25 10:47:08 · 983 阅读 · 0 评论 -
static,inline,volatile的作用
1、static (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid msg() { prin转载 2013-06-25 08:07:16 · 674 阅读 · 0 评论 -
C++ : __attribute__关键字扩展
GCC使用__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化。GCC使用__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化。描述函数属性的几个重要的关键字:void noreturnfun() __attribute__((noreturn));//函数不会返回。void centon(转载 2013-06-24 22:49:30 · 10039 阅读 · 3 评论 -
Java与C++混合编程
现在的程序员,不再像以前一样,掌握一种编程语言就可以混得有模有样了,这里为大家讲的,就是C++与Java混合编程.现实的情况是,真实的项目中,通常是涉及多种编程语言,举几个简单的例子,一个软件为了快速开发,可能是使用Delphi或VB作为界面开发首选语言,底层的指令或核心算法,会使用C/C++处理,涉及数据处理的时候,为了安全和快速开发,会使用Javascript或Python等脚本语言实现数转载 2013-06-25 10:59:37 · 1492 阅读 · 0 评论 -
剖析MFC的文档视图结构
这是我学习MFC过程中搜集的一些资料的整合。 本文结构: (一) 了解文档 / 视结构 (二) 了解与文档 / 视结构有关的各种类之间的关系 (三) 了解了解 CWinApp::OnFileNew 、 CWinApp::OnFileOpen 和 Window/New 的程序流程。 (四) 几种情况的讨论 (一)了解文档 / 视结构 MFC 应用程序转载 2013-06-18 20:37:32 · 725 阅读 · 0 评论 -
MFC 加载其他的应用程序
三个SDK函数 winexec, shellexecute,createprocess可以使用。WinExec 最简单,两个参数,前一个指定路径,后一个指定显示方式.后一个参数值得说一下,比如泥用 SW_SHOWMAXMIZED 方式去加栽一个无最大化按钮的程序,呵呵就是Neterm,calc 等等,就不会出现正常的 窗体,但是已经被加到任务列表里了。ShellExecute较 W转载 2013-06-18 20:36:14 · 652 阅读 · 0 评论 -
VC小技巧(三)视图
1. 如何得到视图指针 [ 问题提出] 现在你有一个多线程的Demo, 你想在多线程里处理视图指针里的函数, 我们给这个函数起个名字:Put(); 该如何实现呢? // 有两种方法可以实现你的要求: //1) 第一种方法: // 要是多线程不是在App.cpp 里出现, 那么要在多线程的.cpp 中加上extern CYourApp theApp;转载 2013-06-18 20:34:55 · 723 阅读 · 0 评论 -
深入解析SendMessage、PostMessage
深入解析SendMessage、PostMessage 本文将使用C++语言,在MFC框架的配合下给出PostMessage、SendMessage等的使用方式与使用不当造成的后果(讨论均针对自定义的消息进行)。如有什么错误,欢迎指正。 写过Windows程序的同学都知道PostMessage、SendMessage的区别,PostMessage函数调用发送之后,立即返回,转载 2013-06-17 11:21:37 · 782 阅读 · 0 评论 -
调试 Windows API
调试 Windows API 真正写过代码的同学没有哪个没有调试过自己的代码吧。在 Visual Studio 中,如果我们想看一个 C++ Run Time 库函数(如:strcpy)的实现,在调试当前行按F11,便可以进入函数内部,来单步执行,调试了。但如果碰到Windows API 函数,如:ShellExecute,F11 不能直接进入调试,怎么办呢?我们能进入 ShellEx转载 2013-06-17 11:04:54 · 819 阅读 · 0 评论 -
Windows 中SQLite3 使用(2) -- 基本导出函数
Windows 中SQLite3 使用(2) –- 基本导出函数 一、概述SQLite3 的最常使用基本导出函数有五个:sqlite3_open:打开(链接到) SQLite3 数据库。sqlite3_close:关闭 SQLite3 数据库连接。sqlite3_exec:对于已打开的数据库连接,执行 SQL 语句。sqlite3_get_table:对于已打开的数据库转载 2013-06-17 10:59:36 · 645 阅读 · 0 评论 -
使用 C++ 处理 JSON 数据交换格式
使用 C++ 处理 JSON 数据交换格式 一、摘要 JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式。本文并不详细介绍 JSON 本身的细节,旨在讨论如何使用 C++ 语言来处理 JSON。关于 JSON 更具体的信息,可参见转载 2013-06-17 10:52:45 · 529 阅读 · 0 评论 -
在 Win7 下使用 VS2005 编译 Chrome
在 Win7 下使用 VS2005 编译 Chrome Chrome 是浏览器的新秀,无论从启动速度、Js 执行速度、更新速度来说,都是最佳的。最主要的是,Chrome 还是开源的,拿来研究一定不错。本文所编译的 Chrome 版本为 Revision:49506(2010.06.11),Chrome 在 Google 内部的开发名是 Chromium,如下都是用开发名 Chrom转载 2013-06-17 10:50:34 · 648 阅读 · 0 评论 -
最快速度找到内存泄漏
最快速度找到内存泄漏许式伟2006年11月某日 内存管理是C++程序员的痛。我的《内存管理变革》系列就是试图讨论更为有效的内存管理方式,以杜绝(或减少)内存泄漏,减轻C++程序员的负担。由于工作忙的缘故,这个系列目前未完,暂停。 这篇短文我想换个方式,讨论一下如何以最快的速度找到内存泄漏。 1、确认是否存在内存泄漏我们知道,MFC程序如果检测到存在内存泄漏,退出转载 2013-06-17 10:41:51 · 602 阅读 · 1 评论 -
C++ 智能指针详解
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::share转载 2013-06-17 10:36:49 · 520 阅读 · 0 评论