
C/C++
Falcon2000
这个作者很懒,什么都没留下…
展开
-
GCC 提供的原子操作
[日期:2011-06-17]来源:Linux社区 作者:FrankTangcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。其声明如下: -->type __sync_fetch_and_add (type *ptr, type value, ...)type __s转载 2011-06-18 17:00:00 · 1593 阅读 · 0 评论 -
zookeeper 3.3.3 C 编译的问题及解决
zookeeper 3.3.3 在Redhat 上编译时,会有下面的错误 ../../../include/zookeeper/recordio.h:70: error:expected unqualified-id before ‘__extension__’../../../include/zookeeper/recordio.h:70: error:expected `)' befo原创 2011-10-22 09:41:55 · 2703 阅读 · 0 评论 -
封装C++ enum ,并设置enum 的名字
/*! * \b author: Peng Futian * * \b Date: 2011-07-30 * * \b Description: 将enum封装在struct中,并且设置enum的名字 * 用法: * 类型定义,为了与数组中的名字对原创 2011-08-19 15:42:31 · 1019 阅读 · 0 评论 -
关于extern 与static 的一点认识
原来总以为static 可以代替extern.能不用extern就不用.现在看来两者区别还是有不少.static变量声明在头文件里会创建多次,而extern可以防止这类情况的发生.static法则: A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态原创 2011-09-15 16:27:09 · 772 阅读 · 0 评论 -
MySQL 使用静态链接库遇到的问题
为了便于程序的部署,使用静态链接库.编译时总是有些函数找不到,后来偶然发现居然和库文件链接顺序有关.mysqlcppconn-static mysqlclient 可以通过mysqlclient mysqlcppconn-static 不通过原创 2011-07-19 18:58:41 · 1682 阅读 · 0 评论 -
MySQL connector/C++ 使用静态链接库的问题
为了便于程序的部署,使用静态链接库.编译时总是有些函数找不到,后来偶然发现居然和库文件链接顺序有关.mysqlcppconn-static mysqlclient 可以通过mysqlclient mysqlcppconn-static 不通过...原创 2018-09-24 17:31:16 · 885 阅读 · 0 评论 -
使用scons替代makefile(3)
<br /><br />在上两篇文章中已经简单介绍了用scons编译库文件,可执行程序的方法,本篇中将主要介绍scons的其他一些常用参数以及变量。<br />scons不带参数执行的时候会执行编译动作,对于内容改变过的源文件它会自动重新编译,scons对文件状态的改变靠的是内容的md5而不是时间戳,这是scons和makefile不同的一点。它对文件信息和状态的记录保存在当前目录下的.sconsign.dblite文件中。<br />scons最常用的参数有两个,-c和-Q。<br />scons -c可转载 2011-04-26 09:32:00 · 1683 阅读 · 0 评论 -
使用scons替代makefile(1)
早在多年前我刚开始接触linux下的C程序时,经常被makefile搞得焦头烂额,尤其当项目大了,子目录多了之后显得尤其不方便。后来开始学会使用开源程序的普遍做法,那就是使用automake/autoconf。时间长了仍然觉得很ugly,目录下总是一堆中间文件,显得好臃肿。去年开始我开始全面使用scons,它是一个对makefile的全面替代。scons由python编写,受到Raymond的大力推荐,scons的官方网站上就有Raymond对scons的评价“It was long past time f转载 2011-04-26 09:29:00 · 1391 阅读 · 0 评论 -
使用scons替代makefile(2)
<br /><br />本篇文章接着上一篇进一步介绍scons的使用方法,主要介绍静态库和动态库的编译<br />在scons里编译库文件和编译可执行程序非常类似,只是采用的指令有所不同。<br />对于静态库,采用如下指令<br />Library(”libdemo”,["a.c","b.c"])或者StaticLibrary(”libdemo”,["a.c","b.c"])<br />对于动态库,采用如下指令<br />SharedLibrary(”libdemo”,["a.c","b.c"])<br转载 2011-04-26 09:31:00 · 1220 阅读 · 0 评论 -
善用backtrace解决大问题
程序在得到一个Segmentation fault这样的错误信息毫无保留地就跳出来了,遇到这样的问题让人很痛苦,查找问题不亚于你N多天辛苦劳累编写代码的难度。那么有没有更好的方法可以在产生SIGSEGV信号的时候得到调试可用的信息呢?看看下面的例程吧!sigsegv.h#ifndef __sigsegv_h__#define __sigsegv_h__#ifdef __cplusplusextern "C" {#endifint setup_sigsegv();#ifdef __转载 2011-04-28 10:25:00 · 1156 阅读 · 0 评论