C/C++
greston
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
COM 接口 Interface
CComObjectRootExCStockPropImplCComControlIPersistStreamInitImplIOleControlImplIOleObjectImplIOleInPlaceActiveObjectImplIViewObjectExImplIOleInPlaceObjectWindowlessImpl IRunningObje转载 2014-07-14 16:04:21 · 3156 阅读 · 0 评论 -
Huawei E180 3G模块驱动应用
(2011-12-12 15:48:30)转载▼标签:杂谈分类: 嵌入式技术一、环境3G modem:Huawei E180(WCDMA)3G SIM Card:China Unicom 3G Card(WO)CPU/BoardFSL P1转载 2014-07-31 09:22:03 · 1586 阅读 · 0 评论 -
基于OPC规范的客户应用程序实现
1 OPC的基本结构OPC由两套接口组成:OPC定制接口和OPC自动化接口,如图1所示。OPC服务器必须实现定制接口,可选择实现自动化接口。这两套标准接口的制定极大地方便了服务器和用不同语言开发的客户应用之间的通信,使用户对开发工具的选择有了较大的自由。 OPC接口可以潜在地应用在许多应用程序中。它们可以用于从最低层设备中读取未加工的数据,再转化至SCADA或者DCS系转载 2014-07-15 15:16:40 · 1902 阅读 · 0 评论 -
在套接口上使用标准I/O
在套接口上使用标准I/O在前面章节的例子代码中我 们已经使用了read(2)或是write(2)系统调用在套接口上执行读取和写入操作。这个规则的一个例外就是recvfrom(2)和sendto (2)函数,这两个函数用来读写数据报。然而,使用read和writte函数调用却有一些程序上的缺点。这一章我们将会讨论以下内容:如何使用fdopen(3)将一个套接口与一个FILE流相关转载 2014-05-29 15:48:24 · 1585 阅读 · 0 评论 -
OPC客户端开发过程整理
2013-09-02 17:01:44| 分类:window其它 | 标签:opc客户端 opc开发 |举报|字号 订阅OPC开发过程:1.注册OPC接口组件2.通过COM接口创建OPCServerList的接口指针CoCreateInstance只能遍历本机,CoCreateInstanceEx可遍历远程机器OPCCLSID_OPC转载 2014-06-26 11:38:23 · 23784 阅读 · 2 评论 -
线程取消(pthread_cancel)
基本概念pthread_cancel调用并不等待线程终止,它只提出请求。线程在取消请求(pthread_cancel)发出后会继续运行,直到到达某个取消点(CancellationPoint)。取消点是线程检查是否被取消并按照请求进行动作的一个位置.与线程取消相关的pthread函数int pthread_cancel(pthread_t thread)发送终止信号给thr转载 2014-03-10 15:59:43 · 765 阅读 · 0 评论 -
UNIX线程编程知识(2)
UNIX线程编程知识时间:2009-07-09 13:59来源: 作者:点击:391次介绍UNIX线程编程知识。1.单线程复制模型概念POSIX线程接口的fork()是单线程复制模型,即函数创建一个新的进程,复制父进程的地址空间,但在子进程中只复制父进程中调用复制fork()函数的线程。当需要在子进程中立即调用exec()函数时,使用这种模型就不需要复制所有的线程,转载 2014-03-06 16:19:31 · 964 阅读 · 0 评论 -
Linux信号列表 2009-03-04 16:59:43
我们运行如下命令,可看到Linux支持的信号列表:~$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15)转载 2014-03-06 16:22:07 · 614 阅读 · 0 评论 -
C,C++宏中#与##的讲解
文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。如定义好#define STRING(x)#x之后,下面二条语句就等价。 char *pChar = "he转载 2014-03-06 16:42:06 · 650 阅读 · 0 评论 -
linux setsockopt函数的用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历转载 2014-02-18 15:59:48 · 6859 阅读 · 0 评论 -
Linux下Socket连接超时的一种实现方法
发布时间:2007.06.06 06:07 来源:赛迪网 作者:skid目前各平台通用的设置套接字(Socket)连接超时的办法是:创建套接字,将其设置成非阻塞状态。 调用connect连接对端主机,如果失败,判断当时的errno是否为EINPROGRESS,也就是说是不是连接正在进行中,如果是,转到步骤3,如果不是,返回错误。用select在指定转载 2014-02-18 14:35:39 · 1212 阅读 · 0 评论 -
STL容器里存放对象还是指针(转)
摘自:http://hsw625728.blog.163.com/blog/static/3957072820091116115732821/一.问题的引出:容器可以存放对象,可以存放指针,这里要谈的是两者的使用问题。就是什么时候存放对象更好,什么时候存放指针更好? 二.问题的分析过程:1. 首先说下stl容器的工作方式 对于内建类型(int float char等),转载 2014-01-17 11:24:02 · 1667 阅读 · 0 评论 -
ubantu 12.10LTS 编译cppunit遇到的问题
1. ./configure 的时候没有生成makefile文件,提示sed认不到#1什么的。原因是父目录中含有一个&字符。重命名完全由英文字符组成的名字后,问题不再出现2. 第一个问题解决了,但是make的时候提示../../src/cppunit/.libs/libcppunit.so: undefined reference to `dlsym'../../src/cppun原创 2014-01-14 09:53:01 · 860 阅读 · 0 评论 -
初用CAsyncSocket遇到的问题[总结]
分类:网络编程2007-03-29 08:58 阅读(968)评论(0)一直以来都不知道mfc关于网络通信的封装类有哪些~只看到过WinInet和CSocket,前者功能太弱,而后者刚开始一直以为跟socket一样,然后断断续续啃了半年tcp/ip协议第三卷[实现],看了大堆的socket编程资料和程序,直到去用的时候才发现真的有点繁琐。而没看异步IO的时候,程序都是靠多线程的.w转载 2013-08-12 17:16:04 · 5512 阅读 · 0 评论 -
C++二维数组&指针
//------------------------------------------不同形式的数组指针的区别 ---------------------------------C++中的指针和数据很让人头晕,尤其是二维的情形。1、int** ptr;//声明指向“一群”指向整数指针的指针。可以理解成ptr[N][N]。(N表示若干,以下同)2、int* ptr[5];//声明5个指转载 2013-05-02 09:51:54 · 967 阅读 · 0 评论 -
C++ 模板特例化
和函数一样,C++中的class也可以类型参数化,其中容器类是极具这一特征的。对于模板类的基本定义和使用,可以参考STL,这里就不做过多的赘述了。下面将主要介绍一下与其相关的高级实用特征。一、模板的特化: 这里可以先将类模板特化与面向对象中的多态进行一个简单的比较,这样可以便于我们对它的理解,也同样有助于指导我们在实际的开发中应用这一C++技巧。众所周知,对于多态而言,提供的转载 2013-04-24 12:59:11 · 2766 阅读 · 1 评论 -
sscanf,sscanf_s及其相关用法
#include 定义函数 int sscanf (const char *str,const char * format,........);函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。 返回0表转载 2013-01-24 22:59:07 · 1532 阅读 · 0 评论 -
用QueryPerformanceCounter实现Windows XP 下微秒级延时
windows的Sleep函数,睡眠线程指定毫秒数,可以用来做毫秒延时。对于微秒延时,没有一个现成的函数,但是可以通过QueryPerformanceFrequencyQueryPerformanceCounter来间接实现。原理就是用循环查询的方式不断调用QueryPerformanceCounter(在Winbase.h中)LARGE_INTEGER freq;LARG转载 2012-11-09 10:46:45 · 1811 阅读 · 0 评论 -
C++ 模板为什么不能分离编译
这两天写了一个循环队列的模板类,构建代码的时候总是报错bin/main.o(.text+0x182):main.cpp: undefined reference to `CCommDataBuf::CCommDataBuf(unsigned long)'bin/main.o(.text+0x1a6):main.cpp: undefined reference to `CCommDataBu原创 2012-11-08 22:29:06 · 1899 阅读 · 0 评论 -
CRITICAL_SECTION详解
很多人对CRITICAL_SECTION的理解是错误的,认为CRITICAL_SECTION是锁定了资源,其实,CRITICAL_SECTION是不能够“锁定”资源的,它能够完成的功能,是同步不同线程的代码段。简单说,当一个线程执行了EnterCritialSection之后,cs里面的信息便被修改了,以指明哪一个线程占用了它。而此时,并没有任何资源被“锁定”。不管什么资源,其它线程都还是可以访问转载 2012-11-08 16:47:55 · 2843 阅读 · 1 评论 -
关于指针
<br />int a[5]={1,2,3,4,5};<br />int *ptr1=(@a+1);// 取数组a的地址,加1表示加一个a的长度,<br /> // 即如果数组a的地址为0,那么ptr1的值为0+1*(5*4)=20<br />int *ptr2=a+1; // 取数组a第一个元素的地址,加1表示一个一个数组元素的长度,<br /> // 即如果数组第一个元素a[0]的地址为0,那么ptr1的原创 2010-09-26 13:52:00 · 413 阅读 · 0 评论 -
内存映射文件
本课中我们将要讲解内存映射文件并且演示如何运用它。您将会发现使用内存映射文件是非常简单的。例子理论:如果您仔细地研究了前一课的例子, 就会发现它有一个严重的缺陷:如果您想读的内容大于系统分配的内存块怎么办?如果您想搜索的字符串刚好超过内存块的边界又该如何处理?对于第一个问题,您也许会说,只要不断地读就不解决了吗。至于第二个问题,您又会说在内存块的边界处做一些特别的处理,譬如放上一些转载 2010-03-18 18:02:00 · 543 阅读 · 0 评论
分享