用indent格式化C程序
来源:互联网 发布:高性能mysql第4版百度 编辑:程序博客网 时间:2024/04/25 15:02
Indent是格式化C程序代码的一个工具,即在程序中通过插入或删除一些空白符来美化程序,增加可读性。这里通过一个例程简短介绍它在FedoraCore下的使用。
语法
indent 输入文件 [-o 输出文件][选项]
它从输入文件得到语法正确的C程序,然后根据几种通用的C程序结构将其格式化。输出文件可选,如果有,则将格式化的程序保存在这个输出文件中;如果没有,则先将原输入文件保存在一个与其同名的备份文件中,然后将格式化的程序保存在输入文件中
案例
原输入程序如下(快速排序例程),没有经过格式方面的优化
/*http://linux.wku.edu/~lamonml/algor/sort/quick.html*/
void q_sort(int numbers[], int left, int right)
{int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right)
{while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;pivot = left;left = l_hold;
right = r_hold;
if (left < pivot)
q_sort(numbers, left, pivot-1);
if (right > pivot)
q_sort(numbers, pivot+1, right);
}
运行命令
[dog@localhost project]$ indent q_sort.c,然后再
[dog@localhost project]$ more q_sort.c,看到
void
q_sort (int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right)
{
while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
q_sort (numbers, left, pivot - 1);
if (right > pivot)
q_sort (numbers, pivot + 1, right);
}
显然地,程序已经经过了优化,更具可读性。而且,在同一目录下多了q_sort.c~这样一个备份文件,其内容就是未经美化的源代码。这是类Pascal风格的代码,如果我们要得到具有K&R风格的代码,则需要加上-br选项
[dog@localhost project]$ indent -br q_sort.c
void
q_sort (int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right) {
while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right) {
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right) {
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
q_sort (numbers, left, pivot - 1);
if (right > pivot)
q_sort (numbers, pivot + 1, right);
}
PS:《Unix Textbook》中说到如果有不需要被格式化的代码,则用 /*INDENT OFF*/和/*INDENT ON*/将其隔开,但是
...
/*INDENT OFF*/
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{numbers[right] = numbers[left];
right--;
}
/*INDENT ON*/
...
在优化后却看到
...
/*INDENT OFF*/
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
/*INDENT ON*/
...
没有达到预想的效果,why?
语法
indent 输入文件 [-o 输出文件][选项]
它从输入文件得到语法正确的C程序,然后根据几种通用的C程序结构将其格式化。输出文件可选,如果有,则将格式化的程序保存在这个输出文件中;如果没有,则先将原输入文件保存在一个与其同名的备份文件中,然后将格式化的程序保存在输入文件中
案例
原输入程序如下(快速排序例程),没有经过格式方面的优化
/*http://linux.wku.edu/~lamonml/algor/sort/quick.html*/
void q_sort(int numbers[], int left, int right)
{int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right)
{while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;pivot = left;left = l_hold;
right = r_hold;
if (left < pivot)
q_sort(numbers, left, pivot-1);
if (right > pivot)
q_sort(numbers, pivot+1, right);
}
运行命令
[dog@localhost project]$ indent q_sort.c,然后再
[dog@localhost project]$ more q_sort.c,看到
void
q_sort (int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right)
{
while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
q_sort (numbers, left, pivot - 1);
if (right > pivot)
q_sort (numbers, pivot + 1, right);
}
显然地,程序已经经过了优化,更具可读性。而且,在同一目录下多了q_sort.c~这样一个备份文件,其内容就是未经美化的源代码。这是类Pascal风格的代码,如果我们要得到具有K&R风格的代码,则需要加上-br选项
[dog@localhost project]$ indent -br q_sort.c
void
q_sort (int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right) {
while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right) {
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right) {
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
q_sort (numbers, left, pivot - 1);
if (right > pivot)
q_sort (numbers, pivot + 1, right);
}
PS:《Unix Textbook》中说到如果有不需要被格式化的代码,则用 /*INDENT OFF*/和/*INDENT ON*/将其隔开,但是
...
/*INDENT OFF*/
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{numbers[right] = numbers[left];
right--;
}
/*INDENT ON*/
...
在优化后却看到
...
/*INDENT OFF*/
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
/*INDENT ON*/
...
没有达到预想的效果,why?
- 用indent格式化C程序
- 用indent批量格式化C/C++源文件
- indent格式化C代码
- indent格式化C代码
- 使用indent格式化C代码
- 格式化C语言命令indent
- 格式化C语言命令indent
- 用 indent 进行代码格式化
- 用 indent 进行代码格式化
- 用 indent 进行代码格式化
- indent-C语言代码格式化工具
- linux C 代码格式化工具indent
- Indent C语言代码格式化工具
- indent修改C程序格式
- 代码格式化命令—indent: indent –h.c –o h2.c -gnu -br
- 格式化 C语言源码——命令indent
- 格式化 C/C++语言源码——命令indent
- 格式化 C语言源码——命令indent
- 如何部署Crystal Report
- XP睡眠唤醒后不再要求输入密码(没有测试过)
- 2005 Java Developer’s Journal Readers’ Choice Awards
- 数据库中读取图片的问题
- 感冒了
- 用indent格式化C程序
- 接口存储过程
- 3年读完大学课程并考上北大光华金融系 真实之强
- 新域名 @live.com 和 @windowslive.com 即将上线 (from cnbeta)
- 发布一个使计算机睡觉的模块:modLetPcDormancy
- asp.net学习笔记
- C++ Primer 中文版(第4版) 不完全勘误表
- 做自己的系统分析师
- Microsoft Specific