2010-12-22 5 views
0

디버그 모드로 매크로를 사용하여 in/out 행에 주석을다는 것이 유용합니다.매크로에서 xcode로 작업하는 메모 매크로를 정의하는 방법

불행히도 Mac Xcode에서는 정상적인 접근 방식이 작동하지 않습니다.

은 내가 또한 웹에서 발견

#define COMMENT SLASH(/) 
#define SLASH(s) /##s 

같은 두 단계 매크로를 사용 / ## /뿐만 아니라 시도했다.

하지만 어느 것도 작동하지 않습니다.

의견 매크로를 정의하는 방법을 알고 계십니까? 감사합니다.

답변

1

왜 안 되니?

#ifdef DEBUG 
// Do debug stuff here 
NSAssert(...); 
#endif 

나는 왜/왜 매크로를 사용하는지 궁금합니다.

+0

C로 프로그램을 작성해야합니다 (Mac 앱이 없으므로 MAC 또는 iPhone 라이브러리를 사용하지 않아도됩니다.) 객관적인 C). 그래서 기본적으로 Xcode SDK를 사용하여이 코드를 작성합니다. 내 파일은 다른 사람들이 사용하기 때문에 디버그 기능을 포함하거나 코드에서 디버그 기능을 호출 할 수 없습니다. 따라서 다른 사람들에게 코드를 보내기 전에 모든 디버그 작업을 주석 처리하는 것이 가장 좋습니다. 그래서 조건부 주석 매크로가 있어야합니다. 그래도 제안에 감사드립니다! 알았어. – user387184

+0

. 그러나 당신의 코멘트가 가능해야하는지 아닌지에 상관없이 여전히 어떤 깃발에 의존하지 않을 것입니까? #ifdef 디버그 대신 #ifdef MYDEBUG를 사용하면 같은 효과를 낼 수 있습니다. 그런 다음 코드를 전달하기 전에 #define MYDEBUG – Donald

+0

네, 맞습니다. 하지만 문제는 조건부 주석을 얻는 방법에 있습니다. 내 파일에서 MYDEBUG 정의를 변경하는 것은 마음에 들지 않습니다. 내 파일에서 다른 것을 변경하지 않아도됩니다. – user387184

1
여기

같은 문제 ...

대답은 엑스 코드는 ISO-준수 프리 프로세서를 사용하는 반면 우리는 전통적인 기대하는 것 같다

(http://developer.apple.com/library/mac/#documentation/DeveloperTools/gcc-4.2.1/cpp/Traditional-macros.html#Traditional-macros 참조) 프리 프로세서의 옵션을 변경 할 수있는 가능성이있는 것 같습니다 하지만 누가 사과 SDK에서 코드를 깰 것인지 알 수 있습니다.

내 코드를 살펴보고 숨겨진 코드가 매크로 뒤에 나오지 않고 매크로 대신 매개 변수로 매크로를 전달하도록 매크로를 변경했습니다. 코드가 그대로 유지됩니다. ... 디버그 코드에 ","가 포함 된 경우에만보기가 불편합니다

관련 문제