C/C++
文章平均质量分 73
大头码农
这个作者很懒,什么都没留下…
展开
-
typedef用法
*****以下是参考部分***** 此部分参考自:http://blog.sina.com.cn/u/572f7666010008dm 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; PCHAR pa, pb;转载 2010-11-29 14:30:00 · 260 阅读 · 0 评论 -
控制台窗口界面编程控制
<br />转自: http://blog.csdn.net/yxnk/archive/2008/05/11/2434685.aspx<br /> <br />摘要: 文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动、光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。<br /><br /> 在众多C转载 2010-11-19 21:14:00 · 641 阅读 · 0 评论 -
用getopt解析命令行参数
用过gcc的都知道gcc有许多参数。例如要将hello.c译成hello.exe并加上调试信息,用gcc hello.c -g -o hello.exe即可。现在分析gcc的参数。对于这个例子,参数可分成三个部分:输入文件(hello.c)、是否包含调试信息(-g)、输出文件 (-o hello.exe)。这三个部分的次序是无关紧要的,例如可以确保,-o后面跟的一定表示输出文件。getopt是C语言标准库中用来处理命令行参数的一个函数,其原型声明在unistd.h文件中:int getopt( int ar转载 2010-11-19 21:16:00 · 665 阅读 · 0 评论 -
前自增和后自增运算符的重载
很久以前(八十年代),没有办法区分++和--操作符的前缀与后缀调用。这个问题遭到程序员的报怨,于是C++语言得到了扩展,允许重载 increment 和 decrement操作符的两种形式。然而有一个句法上的问题,重载函数间的区别决定于它们的参数类型上的差异,但是不论是increment或decrement的前缀还是后缀都只有一个参数。为了解决这个语言问题,C++规定后缀形式有一个int类型参数,当函数被调用时,编译器传递一个0做为int参数的值给该函数。increment的前缀形式表示“增加然后取回”,后转载 2010-11-17 12:54:00 · 4474 阅读 · 0 评论 -
Createprocess控制台程序输出重定向
在Windows编程中,并非每一个应用程序都需要一个图形用户界面(GUI),很多情况下,我们可以编写一个控制台应用程序,这样程序更小,加载更快,传输时间也短,同时也丝毫不牺牲程序应有的功能。这种程序特别适合那些在后台运行的程序,比如压缩、杀毒、上传下载等等。如果我们的确需要在GUI执行这些程序,以完成某些比如类似于磁盘格式化的功能,我们可以在GUI程序中创建一个新的进程,调用这些已有的控制台应用程序,帮助完成这些功能。然而令人失望的是,我们每次加载这些控制台应用程序时,图形程序总会在加载的过程中产生一个不受转载 2010-11-19 21:05:00 · 2218 阅读 · 0 评论 -
memcpy memcopy 的实现
先是VC中的实现直接字符:void * __cdecl memcpy (void * dst, const void * src, size_t count){ void * ret = dst; /* * copy from lower addresses to higher addresses */ while (count--) { *(char原创 2010-11-22 21:21:00 · 1681 阅读 · 0 评论 -
不定参数的应用1
<br /> <br />转自:http://blog.csdn.net/arong1234/archive/2008/05/18/2456455.aspx<br /> <br />不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多。除了格式化输出之外,我实在没看到多少应用。主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它。尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的使用和需要注意的常见问题。原理<br />刚学C语言的时候,一般人都会转载 2010-11-22 22:44:00 · 375 阅读 · 0 评论 -
论调用约定
<br />转自: http://blog.vckbase.com/arong/archive/2004/06/09/409.html<br /> <br /><br />在C语言中,假设我们有这样的一个函数:<br /><br />int function(int a,int b)<br /><br />调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要转载 2010-11-23 16:22:00 · 276 阅读 · 0 评论 -
thrift 入门
<br />。。。<br />刚刚入门,有空看看源码。<br /> <br />http://wiki.apache.org/thrift/原创 2011-05-13 15:45:00 · 527 阅读 · 0 评论 -
wxWidgets 界面编辑入门
最近一直在找一个跨平台的GUI库,发现wxWidgets是一个很不错的选择。个人认为的优点有:1. 类似于MFC, 容易上手2. 在不同平台上的展现是Native的,不像QT什么的知识模拟的。3. 界面编译器很好用哈。最常用的界面编辑器推荐 wxFormBuilder (http://wxformbuilder.org/).Youtube上有一个非常好的入门教程,不过要翻墙http://www.youtube.com/watch?v=id8jQCSRIbo&feature=fvwrel先写这么多哈。。原创 2011-05-13 15:32:00 · 3199 阅读 · 0 评论 -
apue读书笔记之大端小端字节序
<br />一个数 i =0x04030201 的最大有效位总是在最左边 04,最小有效位总是在最右边 01.<br /><br />上图中,整数的地址为n,整数存储范围是 n -n+3. <br />存储最高有效位是整数的最低字节的是大端<br />存储最高有效位是整数的最高字节的是小端<br /> <br />一般的网络字节序是大端(TCP/IP).网络字节和本地字节之间的转换函数:<br /> <br />#include <arpa/inet.h> (旧一点的系统包含 netinet/i原创 2011-05-16 16:15:00 · 579 阅读 · 0 评论 -
ShellExecute与ShellExecuteEx的用法
<br />Q: 如何打开一个应用程序? <br />ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );或 ShellExecute(this->m_hWnd,"open","notepad.exe","c://MyLog.log","",SW_SHOW );正如您所看到的,我并没有传递程序的完整路径。<br /><br />Q: 如何打开一个同系统程序相关连的文档?ShellExecute(this->m_hWnd,"open","c转载 2010-11-19 21:01:00 · 620 阅读 · 0 评论 -
宏展开小结
<br /><br />在C++中,尽管使用宏是不推荐的,但是很多时候宏也会为我们提供一些方便,且在现有代码中宏也确实大量存在。有人认为宏是错误的根源,因为宏展开后,有可能会出现一些稀奇古怪的代码,那么,本文在这里总结一些查看宏展开后的代码的方法。<br />1、在visual studio 2005中,选择项目属性-〉配置属性-〉C/C++-〉预处理器,在“生成预处理文件”中选择生成预处理文件,“不带行号(/EP /P)”或“带行号(/P)”,那么就会在项目所在文件夹下生成一个与源文件同名的“.i”文件,转载 2011-01-10 17:10:00 · 776 阅读 · 0 评论 -
printf Width Specification('*'的用法)
<br />今天注意到了printf 里面 ‘*’的用法,查了一下MSDN:<br /> <br />printf Width Specification<br /> <br /><br />The second optional field of the format specification is the width specification. The width argument is a nonnegative decimal integer controlling the minimu原创 2011-01-05 16:57:00 · 597 阅读 · 0 评论 -
APUE源代码编译
转自: http://linux.chinaunix.net/doc/2004-10-05/22.shtml一最近学习Linux编程,收获真的很多。以前都是别人或man告诉你某个命令怎么使用,但现在我才领悟到,是程序的源代码决定了全部。linux编程,首先需要安装gcc与其它编程工具与库文件。最简单的方法是进入图形界面的添加删除程序,选上开发工具就可以了。 1.APUE2源代码下载:http://www.apuebook.com/src.tar.gz2.我保存到了/root下.解压缩:tar -xzvf s转载 2010-12-01 14:06:00 · 461 阅读 · 0 评论 -
atl中常见的模板使用手法
<br /><br />1、传入基类,继承实现<br />在设计com接口时,经常会遇到这样的情况:设计一个基接口,其他多个接口继承该接口。一个典型的例子是IUnknown接口,所有的com接口必须从IUnknown接口继承,而这些接口的实现都是相同的,我们不可能为每一个com接口写一个IUnknown接口的实现。IUnknown接口的实现比较复杂,分布在几个类中(可参考《深入解析atl》)。比较直观的一个例子是IDispatch接口的实现,通常需要实现IDispatch接口的类都从IDispatchImp转载 2010-12-01 14:54:00 · 602 阅读 · 0 评论 -
unix实际用户ID和有效用户ID解析
今天在看APUE,这两个问题很难理解,GOOGLE一下,有篇文章总结的不错,看了一下才明白透彻了。由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题。关于SUID、 SGID的问题也经常有人提问,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些资料,决定整理成本文,以供大家参考。限于本人的水平问题,文章中如果有不当之处,请广大网友指正。一、UNIX下关于文件权限的表示方法和解析SUID 是 Set User ID,转载 2010-12-01 15:37:00 · 334 阅读 · 0 评论 -
unix解释器原理
<br /> <br />转自: http://www.cnblogs.com/hbt19860104/archive/2008/07/24/1250898.html<br /> <br />引言<br />使用Shell进行工作的人们对Unix/Linux下的Shell编程都很熟悉,在所有的Shell编程的书中都会提到#!/bin/bash,而这里到底包含了些什么?对操作系统而言,这一行字符串意味着什么?你可能会说,不就是会让 /bin/bash程序来解释这个脚本程序吗?当然你是对的,看看我们的标题,这里转载 2010-12-01 16:58:00 · 673 阅读 · 0 评论 -
undefined reference to 'pthread_create'问题解决
<br />由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误:<br />undefined reference to 'pthread_create'<br />undefined reference to 'pthread_join'<br /><br />问题原因:<br /> pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,转载 2010-12-03 11:52:00 · 420 阅读 · 0 评论 -
标准IO缓冲详解 全缓冲 行缓冲 不缓冲
<br />原文见: http://hi.baidu.com/wuji_sky/blog/item/92333898de61f9016e068ce7.html<br /> <br /><br />标准I/O库提供缓冲的目的是尽可能地减少使用read和write调用的次数。他也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。不幸的是,标准I/O库最令人迷惑的也是他的缓冲。<br />标准I/O提供了三种类型的缓冲:<br />1、全缓冲。这种情况下,在填满标准I/O缓冲区后才进转载 2010-12-16 16:21:00 · 1122 阅读 · 0 评论 -
不带缓存的I/O和标准(带缓存的)I/O
<br />转自: http://hi.baidu.com/ganss/blog/item/3e9736c6389ac7199d163d94.html<br /> <br />先来看看不带缓存的I/O和标准(带缓存的)I/O都有那些<br />不带缓存的I/O: read,write,open......<br />标准(带缓存的)I/O: fgets,fread,fwrite.....<br />这里使用两个对应的函数进行比较:<br />ssize_t write(int filedes,转载 2010-12-16 16:22:00 · 491 阅读 · 0 评论 -
VC直接修改IP地址(不需要重起)
<br />原文: http://blog.csdn.net/wangningyu/archive/2009/11/14/4810774.aspx<br /> <br /> <br />设置IP地址只需要更改注册表中关于适配器的相应设置,但更改后需要重新启动系统才能生效,而AddIPAddress函数只能添加IP而不是更改当前的IP,我们在Windows NT/2000界面上操作不需要重新启动就可以生效,那系统到底做了什么额外的工作才使IP设置直接生效呢?笔者通过跟踪explorer.exe中API的调用发转载 2010-12-18 01:08:00 · 1408 阅读 · 0 评论 -
Unix 不回显输入密码
<br />原帖见: http://blog.163.com/xiaolei-li/blog/static/114404451200911172155783/<br /><br /><br /><br />在软件开发中,往往会遇到要求用户输入密码的情况。出于对密码的保密,输入的字符是不会显示到屏幕上的。例如,在登录Linux系统时,输入用户名后,输入的密码是不显示的。这里介绍两种方法来解决这一问题。6.5.1 使用curses库<br />curses库是由柏克莱大学的Bill Joy及Ken Arnol转载 2010-12-26 16:21:00 · 1188 阅读 · 0 评论 -
你不再需要TinyXML,推荐RapidXML
<br />目前我公司开发的Nexus Engine的底层对象序列化使用了TinyXML来读写XML文件。TinyXML有两个不爽的地方,一是它的接口使用FILE*,另外一个是它对wchar_t不能很好的支持。前阵子看Boost库的更新中多了一个PropertyTree,他在处理XML时用到了另外一个小的库--RapidXML。既然间接的是Boost库的一部分,所以是值得一试的。于是找到其官方网站(http://rapidxml.sourceforge.net/)研究了一番。一看之下,甚转载 2011-01-04 14:37:00 · 692 阅读 · 0 评论 -
apue读书笔记之socket
创建 Socket:#includeintsocket(int domain, int type, int protocol);domain: AF_INET AF_UNIX(AF_LOCAL 在某些系统)规定通信的本质,比如地址的格式type: SOCK_STREAM SOCK_DGRAM SOCK_RAW SOCK_SEQPACKET 规定数据的传输方式protocol: 通常为0,使用默认值。四种 type 区别:感觉听上去很简单,其实还是需要理解的SOCK_DGRAM: 数据报方式。无原创 2011-05-16 16:19:00 · 1228 阅读 · 0 评论