让你的代码更易读---代码格式化利器

良好的代码格式能增强代码的可读性,可是有时候在写代码的过程中并不一定能把格式控制的很好,这里介绍几个可以格式化代码的工具:

1. indet:
开源的,
有windows,Linux版本;
只针对C代码进行格式化,官方网站明确说明不支持C++;所以如果硬要用indent格式化C++代码的时候需要谨慎。
命令行方式使用;
2.Astyle:
开源的,
有windows,Linux版本;
可以格式化C,C++,C#,Java代码;命令行方式使用;
3.Sourcestyler C++:
国外的共享软件,
只有Windows版本;
格式化C/C++代码;功能比较强大,有GUI界面也有命令行;2003年以后就没有更新了,主页也找不到了。
4.SourceformatX:
国产共享软件,只有Windows版本;可以格式化N种代码,没用过,据说由于防止破解采用了比较XXX的东西在里面,很多人处于安全性问题不敢使用,目前主页好像也打不开,找不到官方信息,不做什么介绍了。
 
对于前三种工具,都有一些预置的样式可以直接使用;
此外他们都支持命令行,所以很容易集成到其他编辑器中(如:UltraEdit,PsPad,SourceInsight...);
相对于indent,Sourcestyler C++,Astyle格式化比较简单,它只管缩进处理,不会处理其他格式,看个例子就清楚了,
比如:下面一段C代码:
void mem_init (void) { struct mem* mem; memset (ram, 0, MEM_SIZE); mem = (struct mem *) ram; mem ->next = MEM_SIZE; mem->prev = 0; mem->used = 0; ram_end = (struct mem *) &ram[MEM_SIZE]; ram_end->used = 1; ram_end ->next = MEM_SIZE; ram_end->prev = MEM_SIZE; mem_sem = sys_sem_new (1); lfree = (struct mem *) ram; #ifdef MEM_STATS lwip_stats.mem.avail = MEM_SIZE; #endif /* MEM_STATS */ }
三种工具用默认参数格式化的结果如下:
indent:
void mem_init (void) { struct mem *mem; memset (ram, 0, MEM_SIZE); mem = (struct mem *) ram; mem->next = MEM_SIZE; mem->prev = 0; mem->used = 0; ram_end = (struct mem *) &ram[MEM_SIZE]; ram_end->used = 1; ram_end->next = MEM_SIZE; ram_end->prev = MEM_SIZE; mem_sem = sys_sem_new (1); lfree = (struct mem *) ram; #ifdef MEM_STATS lwip_stats.mem.avail = MEM_SIZE; #endif /* MEM_STATS */ }
Astyle:
void mem_init (void) { struct mem* mem; memset (ram, 0, MEM_SIZE); mem = (struct mem *) ram; mem ->next = MEM_SIZE; mem->prev = 0; mem->used = 0; ram_end = (struct mem *) &ram[MEM_SIZE]; ram_end->used = 1; ram_end ->next = MEM_SIZE; ram_end->prev = MEM_SIZE; mem_sem = sys_sem_new (1); lfree = (struct mem *) ram; #ifdef MEM_STATS lwip_stats.mem.avail = MEM_SIZE; #endif /* MEM_STATS */ }
Sourcestyler C++:
void mem_init(void) { struct mem* mem; memset(ram, 0, MEM_SIZE); mem = (struct mem *) ram; mem ->next = MEM_SIZE; mem->prev = 0; mem->used = 0; ram_end = (struct mem *) &ram[MEM_SIZE]; ram_end->used = 1; ram_end ->next = MEM_SIZE; ram_end->prev = MEM_SIZE; mem_sem = sys_sem_new(1); lfree = (struct mem *) ram; #ifdef MEM_STATS lwip_stats.mem.avail = MEM_SIZE; #endif /* MEM_STATS */ }
当然实际上谁也不会写出开始那么bt的代码格式,一般都是缩进上面有些混乱而已,如果这样的话,那么用三种工具格式化的代码格式应该都是差不多的。

你可能感兴趣的:(c,windows,linux,struct,工具,破解)