- 浏览: 242670 次
- 性别:
- 来自: 宁波
最新评论
文章列表
来源:《C专家编程》
尽量使用的C++特性:
类。
构造函数和析构函数,但只限于函数体非常简单的例子。
重载,包括操作符重载和I/O。
单继承和多态。
避免使用的C++特性:
模板。
异常。
虚基类(virtual base class)。
多重继承。
就我个人而言,异常的简单使用也没问题,其它的都很赞成此书的看法。写过一年的C++,似乎也只用到了“尽量使用的C++特性”和异常。
- 2012-02-23 17:25
- 浏览 372
- 评论(0)
《C专家编程》里的第六章介绍了一些有趣&有用的C语言工具。可能因为此书写成年代距今已远且目标为SunOS这个Unix系统,有些工具在我的Ubuntu中是无法使用的。因此我简单测试了一下,总结了这些能在我的Linux上用的工具。
用于检查源代码的工具
工具
位于何处
所做工作
indent
sudo apt-get install indent
C程序美化器,在源文件中运行这个过滤器,可以使源文件有标准的布局和缩进格式。
cflow
sudo apt-get install cflow
打印程序中调用者/被调用者的关系
cscope
...
转自:http://blog.csdn.net/yearn520/article/details/6663265
在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。
首先看看默认的一些core的参数,注意core file size是个0,程序出错时不会产生core文件了。
$ ulimit -acore file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file siz ...
- 2012-02-22 15:13
- 浏览 729
- 评论(0)
转自:http://www.xxlinux.com/linux/article/development/shell/2006-07-16/2802.html
在Shell中有三种变量:系统变量,环境变量,用户变量。其中用户变量在编程过程中使用最多,系统变量在对参数判断和命令返回值判断会使用,环境变量主 ...
- 2012-02-21 21:58
- 浏览 672
- 评论(0)
在每个bash脚本的开头都使用"#!",这用来告诉系统此文件的执行需要指定一个解释器。“#!”实际上是一个 2 字节的魔力数字,这是指定一个文件类型的特殊标记,换句话说, 在这里指是一个可执行的脚本(键入 man magic 来获得关于这个迷人话题的更多详细信息)。在“#!”之后接着是一个路径名,这个路径名指定了一个解释脚本中命令的程序,这个程序可以是 shell,其它编程语言或任意一个通用程序。这个指定的程序从头开始解释并且执行脚本中的命令(从#!行下边的一行开始),忽略注释。
如:
#!/bin/sh
#!/bin/bash
#!/usr/bin/perl ...
- 2012-02-21 21:05
- 浏览 629
- 评论(0)
刷机后一周未出现问题,最近几天发现无法打开数据连接,搜索了一下,解决方案如下:
设置 -- 无线和网络 -- 移动网络 -- GSM/UMTS选项 -- 接入点名称 -- 按“menu”键 -- 重置为默认设置
这个过程需要十几秒到几十秒的时间,我的android版本:2.2
- 2012-02-21 16:42
- 浏览 564
- 评论(0)
转自:《C专家编程》
1. 动态链接库的扩展名是“.so”,而静态链接库的扩展名是“.a”
2. 例如,你通过-lthread选项,告诉编译链接到libthread.so
换句话说,lib前缀和.so后缀都被省略了
3. 编译器期望在确定的目录找到库
一 ...
- 2012-02-21 09:49
- 浏览 911
- 评论(0)
转自:http://blog.csdn.net/fpmystar/article/details/4183678
在进行linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入
./smartzip就能运行脚本了。。
每 ...
- 2012-02-16 14:10
- 浏览 774
- 评论(0)
记得研究生面试时,导师问过我数组和指针的不同,我没答上,十分紧张。后来专门查了一些资料,部分弄清了不同,但直到今天看了《C专家编程》,才对这两者的不同有了更深的了解。
指针有一个让人感到迷惑的性质,他存储的是一个地址,而自身又有一个地址,因此产生了“地址Y”和“地址Y的内容”之间的区别。编译器通过上下文来判断Y的具体含义,以下面这个赋值语句为例):
X = Y;
在这个上下文环境里,X是左值,含义是”X所代表的地址“。左值在编译时可知,表示存储结果的地方。Y是右值,含义是”Y所代表的地址的内容“。右值只有在运行时才能直到,如无特殊说明,右值表示”Y的内容“。
...
- 2012-02-10 17:32
- 浏览 535
- 评论(0)
很久之前从网上下载的一篇文档,现在也忘记具体地址了,打算清一下电脑,贴在这里保存吧。
代码风格好不好就像字写得好不好看一样,如果一个公司招聘秘书,肯定不要字写得难看的,同理,代码风格糟糕的程序员肯定也 ...
- 2012-02-10 10:14
- 浏览 764
- 评论(0)
操作系统:Windows XP
安装了新版本的AviBerry后,发现Aviberry Video Server Scheduler服务无法启动,提示信息是登录验证没通过。后来发现是密码输错了。
下面是关于如何修改密码的详细介绍:
开始 -- 运行 -- 输入"services.msc" -- 找到”Aviberry Video Server Scheduler“服务 -- 右键”属性“ -- ”登录“选项卡 -- 浏览 -- 输入Administrator,找到Administrator帐号 -- 输入对应的密码 -- 确定
这时再到”服务“里启动Aviberry ...
- 2012-02-09 17:02
- 浏览 549
- 评论(0)
摘自:《C专家编程》
不要为了方便起见对结构使用typedef
这样做的唯一好处是使你不必书写”struct“关键字,但这个关键字可以向你提示一些信息,你不应该把它省掉。
typedef应该用在
数组、结构、指针以及函数的组合类型。
可移植类型。比如当你需要一种至少20bit的类型时,可以对它进行typedef操作typedef的提示声明。这样,当代码移植到不同的平台时,要选择正确的类型如short, int, long时,只要在typedef中进行修改就可以了,无需对每个声明都加以修改。
typedef也可以为后面的强制类型转换提供一个简单的名字,如:
...
- 2012-02-09 15:15
- 浏览 527
- 评论(0)
A 声明从它的名字开始读取,然后按照优先级规则顺序读取
B 优先级从高到低依次是:
B. 1 声明中被括号括起来的部分
B. 2 后缀操作符:
括号()表示这是一个函数,而
方括号[]表示这是一个数组
B. 3 前缀操作符:星号*表示 “指向...的指针”
C 如果const和(或)volatile关键字的后面紧跟类型说明符(如int, long等),那么它作用于类型说明符。其它情况下,const和(或)volatile关键字作用于它紧邻的指针星号。
用上面的规则分析这个C语言声明:
char * const *(*next ...
- 2012-02-09 14:40
- 浏览 413
- 评论(0)
在C语言中,直接在参数中声明数组变量是无法实现传值传参的,这时只会把数组的首地址传过去。将数组放置到一个struct中进行传参,可以实现传值的方式。例如下面的程序:
#include <stdio.h>
struct tag {int a[100]};
struct tag orange, lime, lemon;
struct tag twofold(struct tag s){
int i;
for(i=0; i<100; i++){
s.a[i] *= 2;
}
return s;
}
int main(){
int i;
for(i=0; i&l ...
- 2012-02-09 14:23
- 浏览 1202
- 评论(0)