C/C++
风声2012
这个作者很懒,什么都没留下…
展开
-
[转]gcc和g++的区别
转自http://hi.baidu.com/guoyanjoy2/blog/item/cfd14bcb978478f952664f14.htmlgcc和g++的区别 我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++,或者说编译用 gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是更糊涂。误区一:gcc只能编译c代码,g++只能编译c++代转载 2010-09-26 17:26:00 · 695 阅读 · 0 评论 -
编译程序出现 undefined reference to `__gxx_personality_v0' 错误
<br />使用 g++ 编译C++程序时,一直出现错误<br />[root@glnode04 oprofile-0.9.5]# g++ test.cpp <br /><br />/tmp/ccuzXXDZ.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'<br />collect2: ld returned 1 exit status<br /><br />这是g++出现了问题,重新安装一下即可。<br />原创 2011-04-29 19:17:00 · 3475 阅读 · 0 评论 -
使用vim插件 NERD_tree 阅读源码
<br />NERD_tree插件可以列出目录下的文件树结构,在阅读源码时在不同文件夹之间切换很方便。<br /><br />在官网 http://www.vim.org/scripts/script.php?script_id=1658 下载 NERD_tree。<br /><br />安装:<br /><br />下载后解压,<br />复制 doc/NERD_tree.txt 到 ~/.vim/doc 下,<br />在 ~/.vim/doc 中在vim环境下执行命令 : hel原创 2011-04-29 19:55:00 · 1992 阅读 · 0 评论 -
VS 2005 打开 VC 6.0 工程,编译出现 cannot open file libc.lib
VS 2005 打开 VC 6.0 工程,编译时出现如下错误:LNK1104: cannot open file libc.lib原因是Visual C++ 2005不再支持单线程的CRT库(LIBC.lib)解决办法:单击项目->项目属性->原创 2011-09-20 22:56:16 · 2129 阅读 · 0 评论 -
Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)(1)安装freeTDSFreeTDS为Linux系统提供了TDS协议的开源客户端。由于MS SQL和Sybase使用的恰是TDS协议,所以在Linux中可以用FreeTDS原创 2011-10-07 17:10:12 · 2176 阅读 · 0 评论 -
ctags 生成系统头文件、第三方库头文件的 tag
ctags 处理系统头文件 问题提出:vim编写程序时,不能跳转到系统头文件定义,不能自动完成自己编写结构成员。需要解决。ctags 在使用vim编程和浏览代码是非常有用。可以用CTRL+]和CTRL+t 来回跳转关键字。先生成自己工作目录的tags。最简单粗暴用法:$cd yourwork$ctags -R *这样会生成一个tags文件。不过,这种有个问题,成员变转载 2011-11-30 16:46:35 · 10614 阅读 · 0 评论 -
Linux下不安装Oracle客户端使用OCCI操作远程Oracle数据库
步骤如下:// // 1. 从安装好的 Oracle 11g R2 for X64 Linux 上复制OCCI头文件和库文件:// (1). 复制头文件// mkdir -p ~/OCCI-11gR2-X64/include// cp $ORACLE_HOME/rdbms/public/* ~/OCCI/include///// (2). 复制库文件并建立软原创 2011-12-07 21:29:07 · 2742 阅读 · 1 评论 -
解决使用VS 2005 编译器 cl.exe 时弹出的 丢失 mspdb80.dll 错误.
最近在编译 botan 加密算法库,需要在DOS命令行使用 VS 2005 的编译器 cl.exe,但是提示错误 丢失 mspdb80.dll。在网上找到了解决办法。缺失的dll就是在相关的common的IDE里。比如说我的是vs2005,所以我报的错的缺失mspdb80.dll ;若是vs2010,缺失的就是 mspdb100.dll。相关的文件就在 D:\Program原创 2011-12-30 21:10:44 · 3627 阅读 · 0 评论 -
fortran中调用C封装的函数
hello.c: 功能实现------------------------------------------------------------ #include#ifdef PGI //编译时使用 -DPGI 选项定义宏 PGIvoid hello_(int *num原创 2012-03-30 10:04:06 · 2887 阅读 · 0 评论 -
CentOS 5.4下使用yum安装Xen
使用该方法安装的是CentOS 5.4 默认自带的 Xen,安装时最好将内核切换到 5.4 默认的内核,我之前试过一次在另外的内核上操作此过程,安装正常,但是启动后出现了一系列的问题。使用 yum 安装软件的优点是 yum 自动处理了软件包之间的依赖关系,不用手动一个一个安装相关包。使用 yum 能够很方便的安装 CentOS 5.4 默认的 Xen;(1) 制作本地yum源:制作原创 2011-04-21 19:37:00 · 4075 阅读 · 0 评论 -
配置 Eclipse 编译C/C++代码
介绍两种方式使用eclipse编译C/C++代码一、minGW + eclipse classic + CDT(1) 下载安装 minGW地址:http://sourceforge.net/project/showfiles.php?group_id=2435安装到一级目录下,如 D:\minGW。安装完毕,配置环境变量如下:MinGW = D:\minGWPATH原创 2012-08-27 10:30:07 · 1916 阅读 · 0 评论 -
Eclipse 开发 C++ 程序问题汇总
(1) 不能识别 _GLIBCXX_STD 宏工程-->属性-->C++ General-->Paths and Symbols.选择 Symbols,在 GNU C++ 下新建一个 _GLIBCXX_STD 值为 std的宏,然后应用到所有配置文件。原创 2012-08-29 14:40:46 · 1163 阅读 · 0 评论 -
printf 相应的数据类型
常用:类型:% d 有符号10进制整数 i 有符号10进制整数 o 无符号8进制整数 u 无符号10进制整数 x 无符号的16进制数字,并以小写abcdef表示 X 无符号的16进制数字,并以大写ABCDEF表示 f 浮点数 E/e 用科学表示格式的浮点数 g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,原创 2012-09-14 11:37:45 · 1079 阅读 · 0 评论 -
gcc学习总结
gcc学习总结—詹坤林2010 年 10 月(一) gcc编译命令 (1) 简单命令 gcc 源代码文件xxx.c -o 可执行目标文件名(2) 编译时链接动态、静态库命令 C语言中有一些函数不需要进行编译,有一些函数也可以在多个文凭中使用。一般来说,这些函数都会执行一些标准任务,如数据库输入/输出操作或屏幕控制等。可以事先对这些函数进行编译,然后原创 2013-03-09 17:24:49 · 2156 阅读 · 0 评论 -
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型这些数据类型是 C99 中定义的,具体定义在:/usr/include/stdint.h ISO C99: 7.18 Integer types /* There is some amount of overlap with as known by inet code */#if原创 2012-09-14 03:28:48 · 44292 阅读 · 0 评论 -
VC6.0给控制台程序exe文件添加图标
<br />(1)插入图标文件并保存为.rc文件<br />插入—>资源—>ICon,引入,选择.ico图标文件,确定,然后点击保存按钮将图标保存为.rc文件,例如(ico.rc)<br />(2)添加rc文件到工作空间并编译程序<br />切换到FileView,右击"文件名files",选择添加文件到工程,定位到刚创建的ico.rc文件,确定,此时工作空间中会多出一个ico.rc资源<br />(3)编译,debug文件夹中exe文件图标即被替换了。<br />原创 2011-04-27 20:16:00 · 1544 阅读 · 0 评论 -
VC6.0将程序打包成一个可执行文件(release)
<br />(1)控制台应用程序<br />首先打开程序,工程—>设置,左侧下拉列表选择Win32 Release,右侧"Microsoft 基础类",不选择,确定。<br />然后选择组建—>批组建,去掉debug前面的钩,保留release前面钩,确定,完成。完成之后会在主目录下生成Release文件夹,里面的exe文件拷出来可以独立运行。<br />(2)MFC程序<br />首先打开程序,工程—>设置,左侧下拉列表选择Win32 Release,右侧"Microsoft 基础类",选择“使用MFC作原创 2011-04-27 20:15:00 · 4113 阅读 · 0 评论 -
C++中转义序列与数据赋值的奇怪问题
<br />64位机器;<br />用转义序列给变量赋值,出现一些奇怪的问题,将自己的理解记录下来<br />源代码如下:<br />/* datatype.cpp */#include<iostream.h>int main(){ unsigned short ushort_Num; short short_Num; unsigned short ulong_Num; long long_Num; unsigned int uint_Num; i原创 2010-09-29 16:55:00 · 1426 阅读 · 0 评论 -
gcc编译C程序出现段错误
<br />程序在VC 6.0下编译正常运行,<br />在gcc下编译出现“段错误”,<br />最后发现时循环内部定义大型变量所致,<br />我在一个我while循环中定义了一些变量,例如:<br />while()<br />{<br /> char a[50];<br /> char b[50];<br /> char c[20];<br /> memset(a,0,50*sizeof(char));<br /> memset(b,0,50*sizeof(char));<br原创 2010-10-08 14:41:00 · 3367 阅读 · 0 评论 -
[转] Linux下的段错误产生的原因及调试方法
Linux下的段错误产生的原因及调试方法 参阅 http://tieba.baidu.com/f?kz=213806674转载 2010-10-08 15:22:00 · 1026 阅读 · 0 评论 -
使用GDB调试C、C++程序
(1)编译生成执行文件# gcc -g tst.c -o tst 注意 -g 选项不可没有,否则gdb的l命令不能列出源文件内容(2)启动GDBgdb tst (3)gdb命令使用(gdb) help (gdb) help running (gdb) l (gdb) 回车 (gdb) break 137 Breakpoint 1 at 0x400de6: file readxml.c, line 137.(gdb) info break Num Ty原创 2010-10-08 15:24:00 · 4802 阅读 · 0 评论 -
gcc: 内部错误:文件大小超出限制 gcc: Internal error: File size limit exceeded
<br />今天使用gcc编译程序时,出现了如下错误:<br />gcc: 内部错误:文件大小超出限制<br />[root@hdfs05 COpFile]# gcc readxml.c <br />gcc: Internal error: File size limit exceeded (program as)<br />Please submit a full bug report.<br />See <URL:http://bugzilla.redhat.com/bugzilla> for inst原创 2010-10-08 15:20:00 · 6294 阅读 · 0 评论 -
[转]深入了解VC++编译器
深入了解VC++编译器转自: http://tech.e800.com.cn/articles/2009/622/1245641431583_1.html 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,转载 2010-10-10 17:46:00 · 538 阅读 · 0 评论 -
GCC介绍
”作为一个软件用户,你有权按你认为合适的方式运行它,有权研究源代码并按你认为合适的方式进行修改,有权发行软件的拷贝给其他人,有权公布修改版本以便贡献给建立中的自由软件社区。当一个程序用这种方式尊重你的自由时,我们称其为自由软件。在GCC出现以前,已经有了另外的C,Fortran,Ada等编译器,但它们都不是自由软件。你不能够自由地使用它们。我编写GCC,以便我无需放弃我的自由就可以使用编译器。仅仅有编译器对使用计算机系统而言是不够的,你需要整个操作系统。在1983年时,现代计算机的所有操作系原创 2010-10-29 14:50:00 · 1398 阅读 · 0 评论 -
gcc中使用 -I 和 -L 引入外部头文件和库文件时路径的搜索次序
gcc中使用 -I 和 -L 控制头文件和库文件的搜索路径时的搜索次序默认情况下,gcc在下面目录中搜索头文件:/usr/local/include//usr/include/在下面目录中搜索库:/usr/local/lib//usr/lib/搜索头文件的目录列表常被称为include路径,而搜索库的目录列表被称为搜索路径或链接路径。在这些路径中的目录是按次序搜索的,在上面的两个列表中从第一个到最后一个。例如,“/usr/local/include”中找到的头文件优先于“/u原创 2010-10-29 15:28:00 · 9243 阅读 · 0 评论 -
内联函数的实现机制
摘自 http://topic.csdn.net/t/20030630/22/1975426.html 让我们看看C++ 的“函数内联”是如何工作的。对于任何内联函数,编译器在符号表里放入函数的声明(包括名字、参数类型、返回值类型)。如果编译器没有发现内联函数存在错误,那么该函数的代码也被放入符号表里。在调用一个内联函数时,编译器首先检查调用是否正确(进行类型安全检查,或者进行自动类型转换,当然对所有的函数都一样)。如果正确,内联函数的代码就会直接替换函数调用,于是省去了函数调用的开销。这原创 2010-11-03 09:11:00 · 1966 阅读 · 0 评论 -
宏和内联函数
转自 http://hi.baidu.com/liugang585570/blog/item/83fa38f9c9d8fd04d8f9fd04.html介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0)就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执转载 2010-11-03 09:06:00 · 600 阅读 · 0 评论 -
VS编译 error C2275: “XXX”: 将此类型用作表达式非法天天向上
<br />error C2275: “XXX”: 将此类型用作表达式非法天天向上<br /> <br />在移植c++代码到c的时候,经常会出现一个奇怪的错误, error C2275: “XXX”: 将此类型用作表达式非法,<br />这个错误是由于c的编译器要求将变量的声明放在所有函数调用语句之前,而c++没有这样的要求造成的。 <br />解决的办法就是把变量的声明全部放在变量的生存块的开始。原创 2010-11-14 11:20:00 · 8325 阅读 · 1 评论 -
scanf、printf、fscanf、fprintf、sscanf、sprintf等
scanf 从stdin输入指定格式的参数到变量 int scanf (__const char *__restrict __format, ...) __wur; (...是边长的变量参数)printf 将变量以指定格式输出到stdout int printf (__const char *__restrict __format, ...);fscanf 从文件输入指定格式的参数到变量 int fscanf (FILE *__restrict __str原创 2011-01-13 10:27:00 · 1999 阅读 · 1 评论 -
使用 ctags 和 vim 插件 taglist 阅读C和C++源码
源码根目录是: /local/zkl/Datacollectorctags -R * 生成tags文件vim Parapi.cset tags=/local/zkl/Datacollector/tagsctrl+] 进入函数定义处ctrl+T 退回来或者 vim ~/.vimrc :set tags=./tags在源码根目录生成tags,然后在根目录 vim Parapi/parapi.c 编辑代码,这将载入根目录下生成的ctags原创 2011-04-01 20:16:00 · 1953 阅读 · 0 评论 -
C++ 中 string 和其它类型的相互转化。
sscanf、sprintf 也可以用,但是不建议使用,实际上 c++ 实现 string 和其他数据类型的转换很容易完成,见如下代码:#include using std::cout;using std::endl;#include using std::string;#include using std::stringstream;using std::ostrings原创 2012-01-10 14:51:50 · 1421 阅读 · 0 评论