![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++编程
文章平均质量分 57
西红柿code
湖南大学毕业从事电信行业两年unix环境c编程目前从事互联网平台开发
展开
-
Lua调用c++例子
[huangxw3@ubuntu]$cat main.lua-- call a C++ functionavg, sum = average(10, 20, 30, 40, 50)print("The average is ", avg)print("The sum is ", sum)=============================[huangxw3@ubunt原创 2012-06-28 12:29:33 · 572 阅读 · 0 评论 -
模板元编程
1.定义模板元编程(英语:Template metaprogramming;缩写:TMP)是一种元编程技术,编译器使用模板产生暂时性的源码,然后再和剩下的源码混合并编译。这些模板的输出包括编译时期常数、数据结构以及完整的函数。如此利用模板可以被想成编译期的运行。2.模板元编程的优缺点编译期对运行期:因为模板的运算以及展开都是在编译期,这会花相对较长的编译时间,但能够获得更有效率的运原创 2013-08-22 18:21:15 · 1123 阅读 · 0 评论 -
c++异常 连续抛出异常
今天天遇到这样一个问题,连续两次抛出异常,但是只有一个catch,会导致core这个时候会导致core,单线程编程中可能很少遇到这样的问题,但是多线程中是很容易遇到的,举个例子:catch代码在主线程M中,子线程C1抛出异常,如果引起子线程C2的终止,在C2终止的过程中也产生异常,那就出问题了。代码结构如下:try{ 子线程C1 子线程C2}catch(exception&原创 2013-10-12 17:33:19 · 1435 阅读 · 0 评论 -
linux环境下oracle client安装和配置
oracle客户端的安装是非常简单的,关键在tns配置,我这里使用的rpm安装包,oracle本身就不是开源,那使用rpm安装时最简单的。1. 要远程使用oracle,先下载下面三个文件,注意版本最好一致。 oracle-instantclient-basic-10.2.0.4-1.i386.rpm oracle-instantclient-sq原创 2014-01-13 10:35:20 · 2631 阅读 · 1 评论 -
c语言所有的errno枚举值含义
可以通过以下代码,获取所有的错误码信息:#include /* for strerror */#include #include int main(int argc, char ** argv){ int i = 0; for(i = 0; i < 256; i++) printf("errno-%02d is: %s\n", i, strerro原创 2013-08-06 16:03:10 · 3186 阅读 · 0 评论 -
linux下jsoncpp的编译安装使用
安装JsonCpp需要下载JsonCpp和Scon,pythonscons是一个Python写的自动化构建工具,从构建这个角度说,它跟GNU make是同一类的工具。它是一种改进,并跨平台的gnu make替代工具,其集成功能类似于autoconf/automake 。scons是一个更简便,更可靠,更高效的编译软件。下载JsonCpp: wget http://sourcef原创 2014-02-24 14:58:55 · 1575 阅读 · 0 评论 -
source insight 设置course new字体
由于source insight默认采用Verdana字体,这种字体不是等宽的。如果使用这种字体本身就很难对齐(无论是使用空格或Tab键)。改变source insight的字体,推荐使用Courier New字体,9号大小。方法Options->Document Options中更改,设置如下图所示。对于自动对齐(Auto Indenting),点击上图中的Click Here,设置转载 2013-07-15 15:01:18 · 1872 阅读 · 0 评论 -
char *a 和char a[] 的区别
在C/C++中,指针和数组在很多地方可以互换使用,但是数组和指针是有很大的区别的。1.两者在含义上的区别。 数组对应着一块内存区域,而指针是指向一块内存区域。数组的地址和容量在生命期里不会改变,内容可以改变;指针指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错。#includestdio.h>#include原创 2015-10-07 10:21:28 · 827 阅读 · 0 评论 -
c++ vector 使用效率问题
1. vector中的erase方法效率是很低。因为为了保持vector中元素在内存空间中的连续性,在删除某个元素之后,需要将其后的元素依次向前移动一个位置,平均复杂度为o(n)。gcc下erase的实现如下:iterator erase(iteratorposition){ if (position + 1 != end()) copy(pos原创 2012-12-20 00:10:52 · 6798 阅读 · 3 评论 -
简单学习c++11新特性之move
看过很多解释move的博客,感觉都没能说清楚,请君看完。新特性的出现是为了解决现有的问题或者不足之处,move的出现就是为了解决某些场景下深拷贝的效率问题。这个“某些场景”,如下:string类的简单定义如下:class string{public: //拷贝构造 string(const string& s){ delelte ...原创 2019-03-10 21:26:58 · 3260 阅读 · 3 评论 -
c++构造和析构的调用
#include #include using namespace std ;class CTest{public: CTest() { cout } ~CTest() { cout原创 2013-07-25 11:20:25 · 708 阅读 · 0 评论 -
C++虚函数表解析(转)
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2013-04-07 13:35:22 · 517 阅读 · 0 评论 -
c++ exception必须知道的东西(2)
C++标准库提供的逻辑异常包括以下内容。 invalid_argument 异常,接收到一个无效的实参,抛出该异常。 out_of_range 异常,收到一个不在预期范围中的实参,则抛出。 length_error 异常,报告企图产生“长度值超出最大允许值”的对象。 domain_error 异常,用以报告域错误(domain error)。C++标准库提供的运原创 2013-01-08 15:46:48 · 716 阅读 · 0 评论 -
c++ exception必须知道的东西(1)
异常处理:1)处理机制:Try { 若try子句中的任何函数抛出logic_error或者调用另一代码 个函数抛出这类异常,则catch语句会立即执行;}Catch(logic_error& e){原创 2013-01-08 15:37:01 · 757 阅读 · 0 评论 -
可变参数函数
可变参数参数在编程中其实是经常用得到的,查询一些资料,整理了一下,最后写出一个简单的 宏定义的可变参数LOG,这个实例大家肯定可以经常用到。可变参数定义我们学习C语言时最经常使用printf()函数,但我们很少了解其原型。其实printf()的参数就是可变参数,想想看,我们可以利用它打印出各种类型的数据。下面我们来看看它的原型:intprintf( const char* format原创 2013-03-12 09:46:15 · 1234 阅读 · 0 评论 -
exec实例详解
下面这个实例通过execle调用了ls命令;通过execlp调用了echo命令;#include#include#include"ourhdr.h" //char*env_init[] = {"USER=unknown","PATH=/tmp",NULL} ; intmain(){ pid_t pid ; if( (pi原创 2013-03-13 16:34:46 · 1376 阅读 · 0 评论 -
多态基类应声明 virtual析构函数
C++中虚析构函数的作用,当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用,否则派生类对象的析构函数不会被调用。并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。所以,只有当一个类被用来作为基类的时候,才把析构函数写成虚函数。代码:#include using name原创 2013-03-15 17:39:27 · 827 阅读 · 0 评论 -
类成员函数可以访问相同类对象的私有对象
今天在学习c++ copying函数的时候,了解到这个问题:类成员函数可以访问相同类对象的私有对象;下面这个例子是很好的copying函数,有很多细节。实例如下:class Customer{public: Customer(const Customer& c): _name(c._name) { } Customer& ope原创 2013-03-19 17:32:39 · 1835 阅读 · 1 评论 -
sigaction实例
#include #include #include #include #include #include #include #include #include #include #include static void signal_handle(int sign){ printf("Test:System signal(%d原创 2013-03-13 16:40:10 · 1319 阅读 · 0 评论 -
C++ 局部静态初始化不是线程安全的!
在块作用域中的静态变量的规则 (与之相对的是全局作用域的静态变量) 是, 程序第一次执行到他的声明的时候进行初始化.察看下面的竞争条件:int ComputeSomething(){ static int cachedResult = ComputeSomethingSlowly(); return cachedResult;}这段代码的意图是在该函数第一次被调用的时转载 2013-03-21 16:52:48 · 1400 阅读 · 0 评论 -
auto_ptr
auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个转载 2013-03-21 17:27:41 · 581 阅读 · 0 评论 -
boost 1.68 static library compile with -fPIC option
问题:boost/lib/libboost_system.a(error_code.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPICvimtools/build/src/tools/gcc.jam...原创 2019-07-14 18:58:18 · 1182 阅读 · 0 评论