
VC/C++/C
文章平均质量分 75
yuucyf
这个作者很懒,什么都没留下…
展开
-
VC++6.0远程调试
<br />先明确下概念,远程调试嘛,自然是两个机器之间调试。程序运行在目标机器上,调试器运行在本机。当然,目标机器上还是要有少许辅助程序才能跟本机的调试器connect上,以便通讯。一般来说,只需要copy四个文件到目标机器上就行了:MSVCMON.EXE、DM.DLL、TLN0T.DLL和MSDIS110.DLL。这四个文件都能在VC6目录的Common/MSDEV98/Bin目录下面找到。copy过去之后,运行msvcom.exe,看下图片~ <br /><br />有个Settings的按钮,不用管转载 2010-08-09 13:47:00 · 1031 阅读 · 0 评论 -
如何确定一个机器的字节顺序是大端还是小端
什么是大/小端呢?所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。比如0x11223344在大端机上是11223344,在小端机上是44332211,而一个机器是大端还是小端要看cpu类型以及运行在上面的操作系统。同一款cpu在不同的操作系统使用的大小端情况是不同的。当然我们通常使用的x86+windows是小端。那如何测试大小端呢?通常的技巧是使用一个指针:原创 2012-01-11 12:03:44 · 9883 阅读 · 1 评论 -
Calling Convention
1.Background在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道原创 2011-12-28 12:32:32 · 841 阅读 · 0 评论 -
#pragma init_seg使特定的全局变量优先于其他的全局变量先构造
我们知道在C++中的全局变量的构造总是优先于Main之前(应该说程序的执行体),那对于同一个文件,不同文件中定义的全局变量的构造函数是怎么执行的呢?1)对于同一个文件来说:全局变量的构造顺序按照全局变量的声明来构造。如:C_C g_C;C_A g_A;C_B g_B;构造函数的执行顺序为:C_C(), C_A(), C_B(), 不管是在什么编译器上都是按照这样原创 2011-12-12 11:28:47 · 2738 阅读 · 2 评论 -
闲谈字符串转换
计算机发明后,为了在计算机中表示字符,人们制定了一种编码,叫ASCII码。ASCII码由一个字节中的7位(bit)表示,范围是0x00 - 0x7F 共128个字符。他们以为这128个数字就足够表示abcd....ABCD....1234 这些字符了。 咳......说英语的人就是“笨”!后来他们突然发现,如果需要按照表格方式打印这些字符的时候,缺少了“制表符”。于是又扩展了ASC转载 2011-12-09 17:38:21 · 983 阅读 · 0 评论 -
在Visual C++2008中调用GCC/G++编译单文件
在VC2008中,如何编译单文件呢? 除了用cl.exe命令行方式外,能否在IDE中实现? 这里有一个技巧:在VC2008中不能编译单个cpp文件,必须把它放在工程中。但是,我们可以通过调用外部工具实现编译单文件。下面以调用GCC/G++为例说明如何编译cpp文件。首先下载Dev C++, 目前最新版为4.9.9.2。安装 Dev C++的同时就安装了MinGW,其中包含了GCC 3.转载 2011-12-06 13:52:08 · 1511 阅读 · 2 评论 -
如何在32位程序中突破地址空间限制使用超过4G的内存
众所周知,所有的32位应用程序都有4GB的进程地址空间,因为32位地址最多可以映射4GB的内存(对于虚拟地址空间概念不太熟悉的朋友建议去看一下《Windows核心编程》这本书)。对于Microsoft Windows操作系统,应用程序可以访问2GB的进程地址空间(32位Linux可以访问3GB地址空间),这就是称为用户模式的虚拟地址空间。这2GB的用户模式虚拟地址空间位于4GB地址空间的低一半,而转载 2011-12-05 18:24:49 · 6345 阅读 · 0 评论 -
C++中RTTI的编码实现
摘要: RTTI(Run-Time Type Identification)是面向对象程序设计中一种重要的技术。现行的C++标准对RTTI已经有了明确的支持。不过在某些情况下出于特殊的开发需要,我们需要自己编码来实现。本文介绍了一些关于RTTI的基础知识及其原理和实现。RTTI需求: 和很多其他语言一样,C++是一种静态类型语言。其数据类型是在编译期就确定的,不能在运行转载 2011-12-06 12:27:13 · 1444 阅读 · 0 评论 -
关于C++中RTTI的思考?
RTTI(运行时类型信息),是所有RAD开发工具的基础。 这段时间,因为需要在自己的软件中加入扩展的RTTI功能,于是专门对RTTI进行了研究,现在一些心得写下来。RTTI是比较新的编程语言提供的能力,C、Fortran、Basic就没有,而现在几乎所有现代的、可视化的编程语言都提供了RTTI功能。C++的标准中也对RTTI作了规定。但相对其它语言而言,C++的RTTI信息是最简单的。转载 2011-12-06 10:55:48 · 892 阅读 · 0 评论 -
使用IDropTarget接口同时支持文本和文件拖放
使用IDropTarget接口同时支持文本和文件拖放 关于Windows的外壳扩展编程,拖放是比较简单的一种,在网上可以找到不少介绍这个技巧的文章。大部分是介绍使用MFC的COleDropTarget实现的,我觉得一般使用COleDropTarget已经很好了,但是我习惯在一转载 2011-09-23 15:19:40 · 3157 阅读 · 1 评论 -
利用BouncCheck进行单元测试
今天下载了最新的BoundCheck V10.1试用版进行试用,感觉还是蛮好用的,至少比V6.0.1好用,改版本直接可以嵌入到VC2003及以后版本的Visual stdio中进行单元测试,VC2010也Support, BoundCheck的网站如下,可以下载试试,使用为14天。http://www.componentsource.com/products/devpartner-visual-c-boundschecker-suite-visual-studio-concurrent-users/inde原创 2011-04-08 11:17:00 · 6323 阅读 · 10 评论 -
Heap Corruption Detected
<br /> 今天在用PlayAduioer替换成AudioPlay时有遇到播放A1600格式的声音时提示Heap Corruption Detected!错误提示,首先说明一下什么是Heap Corruption Detected!。当输入超出了预分配的空间大小,就会覆盖该空间之后的一段存储区域,这就叫Heap Corruption。这通常也被用作黑客攻击的一种手段,因为如果在该空间之后的那段存储区域如果是比较重要的数据,就可以利用Heap Corruption来把这些数据修改掉了,后果当然可想而知原创 2011-04-06 09:49:00 · 4798 阅读 · 0 评论 -
VC内嵌Python脚本
前言:(tcl 在国内似乎很少有人用,据说因为用的人少,所以中文方面的资料非常少的 python 好像比较好学的,而且用户群比TCL perl 要多,中文资料也蛮多的了,我也在学python)1. 安装Python2.6.1到C:/python262. 用VC2008(VC6.0不行)新建一个VC项目, 在Project Setting中,把C:/python/include加入“其他头文件”那一项, 把c:/python/libs加入link的附加目录里。一个简单的控制台工程的源代码:#include原创 2010-09-03 17:20:00 · 7976 阅读 · 6 评论 -
如何发布vc调用Python的独立运行的程序
<br />编译Python脚本生成可执行程序,可以通过py2exe编译完成。<br />在VC中调用python时,可以结合py2exe,完成整个程序的独立发布^_^<br />google.py:<br />#! /usr/bin/env python<br /><br />import sys, webbrowser<br /><br />def main(a):<br /> url = "http://www.google.com/search?q=%s" % a<br /> webbr转载 2010-09-03 16:17:00 · 3371 阅读 · 1 评论 -
结构体对齐问题.
在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。 例如,下面的结构各成员空间分配情况。 struct tagTest { char x1; short x2; float转载 2012-08-16 11:27:08 · 16134 阅读 · 4 评论