문제

나는 C 코드의 거의 모든 의미 요소 사이에 공백을 두는 것을 좋아합니다.

그러므로 나는 선호한다

if ( ( foo = bar ( arg1, arg2, arg3 ) ) ==  NULL ) {
    printf ( "Error 42" );
}

에게

if((foo=bar(arg1,arg2,arg3))==NULL){
    printf("Error 42");
}

이 작업을 수행할 수 있는 C 미화 도구(유닉스 플랫폼)가 있습니까?
기능 매크로 를만 두어야하는 것은 심각하게 똑똑한 미용사가 필요합니다.

도움이 되었습니까?

해결책

indent -prs -br -i 4 file

이것을 돌립니다 :

#define f(x) ((x)+(x))

if((foo=bar(arg1,arg2,arg3))==NULL){
    printf("Error 42");
    f(42);
}

이것으로 :

#define f(x) ((x)+(x))

if ( ( foo = bar ( arg1, arg2, arg3 ) ) == NULL ) {
    printf ( "Error 42" );
    f ( 42 );
}

그만큼 -prs 옵션은 괄호 주위에 공백, 연산자 주변의 공간 및 쉼표가 표준 이후에 배치합니다. 그만큼 -br 옵션은 브레이싱 스타일을 시행합니다 -i 4 4 개의 공간을 사용하여 들여 쓰기. 매크로 정의는 수정되지 않았지만 코드에서 기능과 같은 매크로로의 호출은 (아마도 원하는 것)입니다.

다른 팁

당신은보고 싶을 수도 있습니다 GNU의 계약. 나는 그것이 당신이 찾고있는 모든 것을 할 수 있다고 생각합니다.

Gnu 들여쓰기는 아마도 그렇게 할 수 있을 것입니다.불행하게도 들여쓰기에는 엄청나게 많은 옵션이 있는데, 그 중 많은 옵션이 전혀 직관적이지 않고 매우 이상한 방식으로 상호 작용합니다.나는 들어가는 것보다 나오는 것이 더 추악하지 않은 방식으로 코드 형식을 지정하지 못했습니다.어떤 경우에는 더 균일했습니다.다른 경우에는 정말 균일했을 것 같지만, 따르는 규칙은 여전히 ​​이상해서 결과가 종종 이상해 보였습니다.

한동안 들여쓰기 문제로 어려움을 겪은 후, 한 형식만 지원하는 훨씬 간단한 프로그램을 작성하고 형식을 변경하려면 코드를 편집하는 것이 더 쉽다고 결정했습니다.

나는 옵션과 함께 VIM을 사용하여 만족스러운 효과에 대한 형식을 사용했습니다. 당신은 전체 파일을 들여 쓰기를 할 수 있습니다

  gg=G
  gg  -- go to 1st line 
  =G  -- indent upto lastline

FormateXPR (VIM7)을 작성하고 싶거나 s /// g 명령으로 사용자 정의 함수를 작성하고 키에 매핑 할 수 있습니다.

Follwing은 #define 라인을 제외하고는 Parantheses 다음에 공간을 배치합니다.

v/#define/s/[()]/ 1/g

예, 당신은 regexes를 배우게 될 것입니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top