2008-10-19 3 views
1

Интересно, существует ли какое-то свободное программное обеспечение, которое позволяет мне передавать файл C и выводит более структурированный C-файл.C-C переводчик/инструмент для очистки C-кода

Я имею дело с короткой частью C-кода, которая была написана давно. Я хотел бы извлечь из него умный алгоритм, но работать с самим кодом сложно, потому что ему не хватает всего, что делает C-код читаемым.

Просто короткий пример:

node *first(node *p) 
{ 
    node *aux=p; 

    if (aux) 
    do aux=aux->next; 
    while(aux!=p && (!aux->intersect || aux->intersect && aux->visited)); 
    return aux; 
} 

То, что я хотел бы получить как результат будет что-то вроде этого:

node *first(node *p) 
{ 
    node *aux=p; 

    if (aux) 
    { 
    do 
    { 
     aux=aux->next; 
    } 
    while((aux!=p) && (!aux->intersect || (aux->intersect && aux->visited))); 
    } 
    return aux; 
} 

Существует ли такая автоматическая очистка инструмента код?

ответ

7

Вы ищете indent очень гибкий и хорошо документированный вид кода.

3

Artistic Style - еще один источник кода для кода C, C++, C# и Java, который будет делать то, что вы хотите.

1

indent является классическим инструментом для работы, как упоминает Илья. Однако я не уверен, добавляет ли он фигурные скобки по запросу для цикла «do { ... } while (...)» или дополнительных скобок в условном выражении одного и того же цикла. Думаю, нет.

< субъект > Я бы также сконфигурировал, чтобы обеспечить пространство вокруг операторов присваивания и неравенства. Должно быть пробел после while и перед скобкой; после скобки не должно быть пробела. </субъект >

Действительно сложный инструмент будет наблюдать, что условие цикла должно быть упрощено. Вы знаете, что второй термин (после оператора или) будет когда-либо оценен только в том случае, если первый является ложным, поэтому повторный тест aux->intersect является избыточным.

Смежные вопросы