摘要:原文链接:http://xiaomage.blog.51cto.com/293990/72755linux下用g++编译代码,在连接一个c的静态库的时候,总是提示:undefined reference to`错误,找不到库函数。main.c:(.text+0x15): undefined reference to `MemoryContextInit()'main.c:(.text+0x26): undefined reference to `MemoryContextDestory()'用gcc编译就可以通过。其实,代码不是面向对象的c++语言,开始没有想到是c++调用c函
阅读全文
随笔分类 - c编程
摘要:如果用户熟悉Linux下的sed、awk、grep或vi,那么对正则表达式这一概念肯定不会陌生。由于它可以极大地简化处理字符串时的复杂度,因此现在已经在许多Linux实用工具中得到了应用。千万不要以为正则表达式只是Perl、Python、Bash等脚本语言的专利,作为C语言程序员,用户同样可以在自己的程序中运用正则表达式。 标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。编译正则表达式 为了提高效率,.
阅读全文
摘要://头文件/** Default header file for malloc-2.8.x, written by Doug Lea and released to the public domain, as explained at http://creativecommons.org/licenses/publicdomain. last update: Mon Aug 15 08:55:52 2005 Doug Lea (dl at gee) This header is for ANSI C/C++ only. You can set any of the fol...
阅读全文
摘要:假设当前目录下有这些源文件:[main.c func.c func.h],其中main.c要调用func.c中的函数。【1】生成静态库:$ gcc -c func.c -o func.o$ ar rcs libfunc.a func.o$ gcc main.c -o main -static -L. -lfunc$ ./main【2】生成动态库:$ gcc -fPIC -c func.c -o func.o$ gcc -shared -o libfunc.so.1.0.0 func.o$ ln -s libfunc.so.1.0.0 libfunc.so$ gcc main.c -o main
阅读全文
摘要:#define Conn(x,y) x##y#define ToChar(x)#@x#define ToString(x) #xx##y表示什么?表示x连接y,举例说:int n = Conn(123,456);结果就是n=123456;char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";怎么样,很神奇吧再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:char a = ToChar(1);结果就是a='1';做个越界试验char a
阅读全文
摘要:memmove、memcpy和memccpy三个函数都是内存的拷贝,从一个缓冲区拷贝到另一个缓冲区。memmove(void *dest,void*src,int count)memcpy(void *dest,void *src,int count)memccpy(void*dest,void*src,int ch,int count)表头文件: #include <string.h>定义函数: void *memcpy(void *dest, const void *src, size_t n)函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内
阅读全文
摘要:关于读写文件时文件锁的一些问题。 bool flock ( int handle, int operation); man 2 flock 就可以查看flock的一些信息。 flock() 操作的 handle 必须是一个已经打开的文件指针。operation 可以是以下值之一: 要取得共享锁定(读取程序),将 operation 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。 要取得独占锁定(写入程序),将 operation 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。 要释放锁定(无论共享或独占),将 operation 设为 LOC...
阅读全文
摘要:如果你有一定的C基础可能学起来比较容易些,但是学习C++的过程中又要尽量避免去使用一些C中的思想;平时还要多看一些高手写的代码,遇到问题多多思考,怎样才能把问题抽象化,以使自己头脑中有类的概念;最后别忘了经常上机自己调调程序,这是谁也代替不了的. C++类库介绍 再次体现了C++保持核心语言的效率同时大力发展应用库的发展趋势!!在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库.
阅读全文
摘要:PJSIP是一个开放源代码的SIP协议栈。它支持多种SIP的扩展功能,目前可说算是最流行的sip协议栈之一了。下面列出其重要的几种优点:1)代码层次非常清晰,从低级到高级都提供了很方便的接口供开发;2)提供相当多的测试用例和一个基于pjsip开发的命令行UA程序供开发人员参考;3).高度的可移殖性 只需简单的编译一次,它能够在多种平台上运行(所有Windows 系统列, Windows Mobile, Linux, 所有Unix 系列, MacOS X, RTEMS, Symbian OS, 等等)。 4).极小的内存需求 官方宣称编译后的库,完全实现SIP的功能只需要150K的内存空间,这使
阅读全文
摘要:下面这段程序是一个C语言的小技巧,其展示了如何把一个参数为结构体的函数转成一个可变参数的函数,其中用到了宏和内建宏“__VA_ARGS__”,下面这段程序可以在GCC下正常编译通过:#include <stdio.h> #define func(...) myfunc((struct mystru){__VA_ARGS__}) struct mystru { const char *name; int number; }; void myfunc( struct mystru ms ){ printf ( "%s: %d/n" , ms.name ?: &quo
阅读全文
浙公网安备 33010602011771号