2011-02-05 2 views
1

광산 프로젝트에서 Uncrustify를 사용하려고하지만 매크로가 Objective-C 메시지의 수신자로 사용될 때 발생하는 간격 변경 사항과 관련하여 일부 문제가 발생합니다. . 예를 들어, 다음 매크로 및 메서드 호출을 주어진, 나는 그대로있는 그대로 간격을 기대합니다.메서드 호출 내 매크로와의 공간 할당 해제 문제 해결

#define NilOrNotNSNull(val) ({id __val = (val); (__val == [NSNull null]) ? nil : __val;}) 

title_ = [NilOrNotNSNull([dict objectForKey:@"post_title"]) copy]; 

그러나 이것은 결과입니다.

#define NilOrNotNSNull(val) ({id __val = (val); (__val == [NSNull null]) ? nil : __val;}) 

title_ = [NilOrNotNSNull ([dict objectForKey:@"post_title"])copy]; 

Uncrustify 괄호 안에 텍스트가 매크로 인수 것을 인식하지 못하는,하지만 난 정말 도대체 그것이라고 생각 모르겠어요 것처럼 나타납니다. 이것은 나에게 Uncrustify 버그처럼 보이지만 내 설정에 문제가 될 수 있으므로 GitHub에서 문제를 제기 할뿐만 아니라 여기에서 묻습니다. 다음은 내가 사용하고있는 설정입니다 : https://gist.github.com/812314

누군가가 통찰력을 제공 할 수 있다면, 고맙겠습니다.

답변

1

구성을 사용하여 실행하면 정확한 결과를 얻지 못합니다. 어떤 버전을 사용하고 있습니까? 다음과 같이 내 버전의 출력은 다음과 같습니다

macbook-adamd:~ adamd$ uncrustify --version 
uncrustify 0.56 
나는 당신의 설정을 사용하여 얻을 출력은 줄 바꿈에 매크로의 가까운 부모를 래핑 백 슬래시를 가지고

: 내가 제거 할 수 말했다

#define NilOrNotNSNull(val) ({ id __val = (val); (__val == [NSNull null]) ? nil : __val; } \ 
         ) 

title_ = [NilOrNotNSNull ([dict objectForKey:@"post_title"])copy]; 

NilOrNotNSNull과 열린 파일의 간격은 set func_call_user NilOrNotNSNull을 구성 파일의 맨 위에 추가합니다. 자세한 내용은 sp_func_call_user_paren 설명서를 참조하십시오. 공백을 제거하도록 옵션을 설정 한 것 같습니다. 일치시킬만한 정의가 없습니다.

#define NilOrNotNSNull(val) ({ id __val = (val); (__val == [NSNull null]) ? nil : __val; } \ 
          ) 

title_ = [NilOrNotNSNull([dict objectForKey:@"post_title"]) copy]; 

내가 당신의 요점을 포크하고 업데이트 : https://gist.github.com/815042

+0

아, 좋은

다음은 set func_call_user NilOrNotNSNull 내 출력됩니다. 그것은 제 생각으로는 일종의 해결 방법입니다. 그러나 그것은 제가 생각하기에 가능합니다. 잘하면 누군가 Github에 대한 제 호의 내용에 따라 그것이 의도 된 것인지 아닌지에 대해 의견을 말합니다. 예, 맞습니다. 출력 예가 정확하지 않았습니다. :) 나는 Uncrustify를 거치지 않는 미리 컴파일 된 헤더에서 매크로 정의를 추출 했으므로 실현하지 못했습니다. –

+0

두 번째 생각에이 해결 방법은 uncrustify 구성에 수동으로 프로젝트의 모든 단일 함수 및 매크로 이름을 수동으로 추가하는 것입니다. 그것은 만족스러운 해결책이 아닙니다. –