![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++ 程序开发
JarvisChu
这个作者很懒,什么都没留下…
展开
-
C与C++中static关键字用法比较
一、预备知识作用域 定义位置局部变量:在函数内定义的变量 ßà 内部变量全局变量:函数之外定义的变量 ßà 外部变量原创 2011-07-15 18:28:44 · 919 阅读 · 0 评论 -
Windows编程之文件/目录管理
一、文件管理1. CreateFile 2. CopyFile3. DeleteFile4. CreateHandLink 创建硬连接BOOL CreateHardLink( LPCTSTR lpFileName, // link name name LPCTSTR lpExistingFileN原创 2012-11-09 13:30:41 · 2325 阅读 · 0 评论 -
标准输入、输出、错误设备
在ANSI C、Unix、Windows编程中,都定义有三个标准设备,即标准输入设备、标准输出设备以及标准错误设备。标准输入设备通常是键盘标准输出设备通常是屏幕标准错误设备通常是屏幕1) 标准设备 在ANSI C编程中,三个标准设备分别是:stdin,stdout,stderr 在stdio.h中有如下定义 #define st原创 2012-11-07 18:05:17 · 6104 阅读 · 0 评论 -
Windows下使用GNU编译器
一、环境配置1. 下载安装MinGW 地址 http://sourceforge.net/projects/mingw/2. 设置环境变量 在path变量中,添加路径mingw的路径,如C:\Program Files\MinGW\bin二、编辑源代码 Windows命令行使用GNU编译器 经过上述两步,就可原创 2012-11-06 19:22:01 · 25153 阅读 · 0 评论 -
调用约定 笔记
调用约定规定了三个部分的内容:1. 参数的压栈顺序 (自左向右,还是自右向左)2. 参数栈由谁维护 (调用函数,还是被调函数)3. 编译时,函数名的修饰约定(_cdecl为 _function)[1] _stdcall 标准调用约定 自右向左压栈 被调用者清理堆栈 (_function@n n为参数的字节数)原创 2012-11-06 14:53:02 · 1319 阅读 · 0 评论 -
排序_交换_随机
涉及知识点:1. 冒泡排序2. 选择排序3. 不使用第三个变量,交换两个变量4. 随机数组生成5. 预定义变量/************************************************************************* 名 Sort.c* 功 能:顺序表* 描 述:排序算法* 作 者:JarvisChu* 时原创 2012-10-22 18:32:01 · 1038 阅读 · 0 评论 -
基于sqlite3实现的简单通讯录程序(控制台)
1. sqlite3 安装1.1. 下载sqlite3源码 www.sqlite3.org 下载 sqlite-autoconf-3070701.tar.gz1.2. 解压 将下载的 sqlite-autoconf-3070701.ta原创 2011-08-24 11:16:28 · 4386 阅读 · 1 评论 -
Linux 编程总结(不断更新)
1. 清屏 system("clear");原创 2011-08-22 17:02:03 · 806 阅读 · 0 评论 -
(转)gcc 的简单使用说明
gcc是gnu的c编译器,gcc在执行编译工作的时候,总共需要4步:1. 预处理, 生成.i的文件 [预处理器]2. 将预处理后的文件不转换成汇编语言, 生成文件.s [编译器egcs]3. 有汇编变为目标代码 (机器代码) 生成.o的文件 [汇编器as]转载 2011-09-04 20:51:04 · 1328 阅读 · 0 评论 -
C++ Primer 学习笔记--基本概念和数据类型
目录1. 后缀名... 12. include 预处理指示符... 13. 条件指示符 #ifndef #indef. 24. 编译器自动定义预处理名字... 25. assert. 26. 标准错原创 2011-07-04 17:30:57 · 1109 阅读 · 0 评论 -
易错点:c 从键盘读入double类型数据
一直在用C++,使用cin读入double类型,今天写了点C,突然发现从键盘读入double类型出错了。代码如下:double a;scanf("%f",&a);printf("%f\n",a);输入的小数部分是乱码。查了一下资料,原来是我把格式化输入搞错了。原创 2011-07-16 22:11:30 · 5184 阅读 · 0 评论 -
C语言中可变形参简单实例和简单的printf功能的实例
以下程序主要包括三个主要函数:一个最简单的可变形参函数实例;一个简单的printf功能的实例;一个打印字符串函数(辅助);其中myPrintf函数,实现了printf的部分简单功能,并没有去实现格式化输出操作(%2d %.2f 等),因为只是它一个实例而已,目的是更好理解掌握可变原创 2011-07-17 21:51:08 · 3404 阅读 · 0 评论 -
C Standard Library 头文件 math.h 中函数实例
/************************************************************************************************ * 名 称: main.c * 功 能:C标准库,头文件math.h学习,笔原创 2011-07-16 20:44:25 · 1617 阅读 · 0 评论 -
在 WPF 中,使用 C++ 编写的 DLL 文件
WPF运行在CLR上的,它的代码是托管代码。C++编写的DLL代码是非托管的。在WPF中调用C++编写的DLL代码需要使用: using System.Runtime.InteropServices; [DllImport("Dll.dll", EntryPoint = "原创 2011-07-26 11:08:16 · 14669 阅读 · 1 评论 -
C++ 运算符流操作符重载和友元--笔记
/************************************************************************************************ * 名 称: friend.cpp * 功 能:学习C++ Premier原创 2011-07-23 20:57:42 · 6578 阅读 · 0 评论 -
GTest 初次使用中所遇问题及其解决方法
初次接触GTest,按照文章《玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest》中所述步骤,下载、编译一番顺利,到了使用GTest的时候,却没能像文章中那样顺利运行。问题出现了如下问题(我出现的问题和下面两种是相似的,写此文时无法重现我所遇的错误):1. (摘自上述博文中的评论),连接错误,提示已定义。2. (具体原创 2012-11-17 20:22:24 · 4793 阅读 · 0 评论 -
C++ 线程同步 (学习笔记)
1. 利用Mutex 互斥对象#include #include DWORD WINAPI Fun1Proc( LPVOID lpParameter );DWORD WINAPI Fun2Proc( LPVOID lpParameter );int tickets = 100;HANDLE hMutex; //互斥对象int main(){ HANDLE原创 2010-08-06 16:34:00 · 1379 阅读 · 0 评论 -
如何理解C语言编译器是用C语言开发的
早前看到过一句话 "Visual Studio 2010的界面是使用WPF开发的“后来又看到”C语言的编译器,通常使用C语言或C++语言开发“咋看上去,有点”自己生自己“的意思 和”鸡生蛋,蛋生鸡“的迷惑。WPF本身就是Visual Studio 中提供的一种开发项目模板,怎么Visual Studio 的界面是用它开发的?是现有的Visual Studio 还是先有的WPF?原创 2013-01-11 14:11:06 · 3425 阅读 · 0 评论 -
C++计时的几种方法说明及例程
1. 使用clock() 函数 头文件:clock()函数,返回“自程序启动到调用该函数,CPU时钟的计时单元数(clock tick)”每过1ms,计数值+1 精度:1毫秒#include #include int main(){ clock_t start,en原创 2013-12-16 15:00:33 · 2306 阅读 · 0 评论 -
C++下个标准,可以考虑把GC系统加进去
今天看Bjarne Stroustrup 的《The Design and Evolution of C++》,看到其中说85年前,他也想过把自动垃圾回收(GC)系统加入C++语言,没能实现的原因是当时的计算机性能跟不上,系统无法承受。做了好几年的C++开发,为内存问题不知头疼过多少次的我,突然想,既然当时是因为客观原因不能实现的,让我们羡慕了Java和C#开发者这么多年,现在可观条件已经满足原创 2012-08-16 11:22:34 · 1396 阅读 · 2 评论 -
C++/C#中堆栈、对象内存模型、深浅拷贝、Array.Clone方法
<br />目录<br />1. C++/C#中对象内存模型..................................................................................................... 1<b原创 2011-05-16 22:13:00 · 7323 阅读 · 9 评论 -
GDI实现图像的简单显示特效
1. 原理 核心是将图像分成不同的块,然后以不同的顺序显示2. 特效原创 2013-10-16 20:06:06 · 2618 阅读 · 0 评论 -
在程序A中阻塞式的调用、执行程序B
在程序A中,需要调用执行程序B,并且要等待B结束后,才返回A继续执行。即:A --> B -->A方法使用CreateProcess 创建进程,使用WaitForSingleObject等待结束信号代码HANDLE hNewProcess= NULL;STARTUPINFOA si = { sizeof(si) }; PROCESS_INFO原创 2013-09-26 19:22:11 · 1533 阅读 · 0 评论 -
GDI+ 中 GetImageEncodersSize 报错的解决方案
在使用GDI+的过程中,使用GetImageEncodersSize()函数时,出现如下内存错误经过调试,发现其原因是:在调用GetImageEncodersSize函数时,GDI+还没有被初始化所以解决方案是:确保调用前,GDI+的初始化函数 GdiplusStartup 已经被调用PS: 习惯性的将初始化函数GdiplusStartup 放在M原创 2013-10-11 21:51:59 · 4269 阅读 · 0 评论 -
GDI+初探之图像透明显示和保存
GDI+ 的配置 1. 引入库文件以MFC 单文档程序为例新建一个MFC单文档程序,如GdiPlus,在右击项目,选择 属性--> Input-->Additional Depende原创 2013-10-11 20:25:46 · 5804 阅读 · 4 评论 -
易错点:C++ switch case中定义变量
不止一次遇到,特此记下,以防再望下面的代码会报错int i=0; switch(i) { case 1: int j=1; break; case 2: i++; break; default: break; }Error 1 error C2360: initialization of 'j' is skipped by 'case' la原创 2013-06-05 19:23:49 · 2537 阅读 · 0 评论 -
C++ 播放声音 (学习笔记)
一、播放系统的消息声音 BOOL WINAPI MessageBeep( __in UINT uType); MSDN 中对这个函数的说明是:播放一个波形文件(也就是wav格式),每一个声音类型的波形声音在注册表中有一个条目(entry)指定.MessageBeep(MB_OK);Sleep(3000);MessageBeep(MB_ICONWARNING);Sleep(30原创 2010-08-03 19:46:00 · 22812 阅读 · 8 评论 -
开发语言类 -- C
*--- 要点 ---*1. 预编译指令 、ANSI标准宏2. 字节对齐3. 关键字4. 可变形参列表5. assert*--- 详解 ---**--- 代码 ---*#include #include #include //va_list#include //assert#define _DEBU原创 2013-03-20 20:06:44 · 1109 阅读 · 0 评论 -
Win32 中 Slider Control 的使用
1. 添加控件 比如ID设置为:IDC_MY_SLIDER2. 设置控件的值范围 HWND hWndSlider = GetDlgItem(m_hWnd, IDC_MY_SLIDER); //m_hWnd为父窗口的句柄 SendMessageW(hWndSlider, TBM_SETRANGE, TRUE, (LPARAM)MAKELONG(-27,27));//设置原创 2013-05-10 12:39:58 · 4901 阅读 · 1 评论 -
Windows编程入门程序详解
Windows编程入门程序详解1. 程序/************************************************************************ * 名 称:Windows_Frist_Code.cpp * 功 能:Windows编程入门 * 描 述:包含WinMain函数、WNDCLASS、消息循环等多种内容原创 2012-10-26 15:25:17 · 15838 阅读 · 3 评论 -
Windows编程 之临时文件 (笔记)
1. 函数说明1.1 GetTempFileName 创建一个临时文件,并返回临时文件的名字【1】 lpPathName 路径名【2】lpPrefixString 前缀【3】uUnique 是否唯一,0为唯一,否则不是。当设置为0时,会创建一个空文件,否则只是返回一个文件名【4】 返回的文件名,格式为 \ .TMP UINT WINAPI GetTemp原创 2013-05-22 12:33:30 · 1450 阅读 · 0 评论 -
(转)malloc与new的区别
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函转载 2011-07-15 18:38:17 · 722 阅读 · 0 评论 -
C++异常处理实例
/************************************************************************************************ * 名 称:exceptions.cpp * 功 能:学习C++ Premi原创 2011-07-22 22:41:51 · 5013 阅读 · 1 评论 -
一些编程小技巧----不断更新中
一、数字转化成字符 如有 int a = 5 现在要把 5变成 '5' 放入ch中 int a=5;int ch;ch = a+'0';原创 2010-11-28 16:04:00 · 1191 阅读 · 0 评论 -
CString与char[] 的相互转换方法以及结尾乱码问题的分析解决
这是一个很常见的问题,下面记录下我的解决方案。一、CString 转化成char[]方法一:运用 CString.GetBuffer(0) 与 strcpyCString str;int len = str.GetLength();char* arr = new char[len];strcpy(arr,str.GetBuffer(0));二、char[]转化成CString首先我们就会想到下面的写法char ch[7] = {'w','u','d','i','z','h','u'};C原创 2010-10-04 17:54:00 · 7363 阅读 · 0 评论 -
(转)C++界面库的抉择
<br />C++的界面库经过几天来的搜索,总结了下面几种的优缺点<br />1. MFC<br /> 优点:VS2008以及VS2010的扩展确实很强大,特别是原生的窗口运行时停靠以及PropertyGrid确实很强大<br /> 缺点:默认字体很模糊,无论你对MFC多了解,C++多熟悉,每次写代码时依然要重新熟悉代码,更不用提分析别人写的MFC代码,一个字:乱。<br />2. WTL<br /> 优点:Windows下有个最好的例子:Google Chrome<br /> 缺点:缺乏设转载 2010-08-12 17:37:00 · 1671 阅读 · 0 评论 -
显示鼠标当前屏幕位置
首先的想到的是 相应mousemove消息。可是试过之后就会发现,当窗口不是最大化显示时,会出现两个问题:第一个,坐标系的不同,以致于显示的坐标是以窗口坐标系为基准的,而不是屏幕,这个问题虽然可以通过ClientToScreen()函数来解决,但是还会有下面一个问题;第二个,当鼠标超出窗口,在窗口外(准确的是在客户区外)之后,就会没有mousemove消息发送给窗口,这样我们显示的坐标就不变了。所以我想着利用线程来实现鼠标位置的捕获和显示,在Dialog 的OnInitDialog()函数中创建一个线程hT原创 2010-08-11 17:12:00 · 2780 阅读 · 0 评论 -
MFC 创建快捷方式(学习笔记)
<br />下面的代码不是我写的,是用的别人的源代码,这里记录下来,以便以后学习<br />void CFileOperateDlg::OnCreateShotcut() { //创建快捷方式 CString lpszPathLink("C:/aaa.lnk"); LPCSTR lpszPathObj="C:/aaa.txt"; LPCSTR lpszDesc="link for a txt"; CoInitialize(NULL); HRESULT hres; IShe原创 2010-08-09 22:15:00 · 3017 阅读 · 0 评论 -
(转)UpdateData在线程中出错的解决办法
UpdateData在线程中出错的解决办法2009年12月3日虚幻发表评论阅读评论最近在写一个监视程序,需要定时查看共享内存中的各个值。于是在MFC中,首先开了一个线程,用的是boost的timer,每隔1秒读取共享内存中的值,另外一个线程通过调用UpdateData(FALSE)将值显示在界面上。但是在我调试的时候发现,UpdateData一直报错。最后查了下,还是线程的问题,在线程中,不能直接用UpdateData来更新数值。解决的办法,应该自己定义一个消息,将UpdateData(FALSE)转载 2010-08-09 21:39:00 · 1484 阅读 · 0 评论 -
(转)用Visual C++操作INI文件
基础类<br />用Visual C++操作INI文件转自 《csdn VC编程经验总结》,貌似它这书这篇也是转别人的,呵呵在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下:<br /><br /> 一.将信息写入.INI文件中.<br /><br /> 1.所用的WINAPI函数原型为: <br /><br />BOOL WritePrivateProfileString(<br />LPCTSTR lp转载 2010-08-11 15:59:00 · 1182 阅读 · 0 评论