howmany()
메서드를 정의하는 코드를 작성하려고합니다.시스템 기능과 같은 매크로 정의를 해제하는 방법은 무엇입니까?
/usr/include/sys/types.h
#define howmany(x, y) __DARWIN_howmany(x, y)
에 같은 이름을 가진 함수와 같은 매크로가 OSX에서
, 나는
#ifdef howmany
#undef howmany /*undefining '/usr/include/sys/types.h' */
#endif
그러나 함수로 헤더 파일에 #undef
포함 해봤 유사 매크로는 활성 상태로 유지됩니다.
/usr/include/sys/types.h:184:9 참고 : 매크로 'howmany'#DEFINE howmany (x, y)는 여기에서 정의 __DARWIN_howmany (X, Y)/* # y를 X에서의 == 비트? */
이 함수와 같은 매크로는 어떻게 비활성화해야합니까?
지금 막 시도해 보았습니다. #include 다음에 나오는 간단한 #undef howmany가 정상적으로 작동합니다. –
Ssswift
이것은 매우 허약합니다. 예, 아마 작동시킬 수는 있지만, 물건을 가져 오는 방법에 대한 아주 작은 변경으로 인해 다시 실패하게됩니다 (아니면 더 나쁜 코드를 호출하는 것). '# undef'가'types.h'를 포함 할 수있는 모든 파일에 포함되어 있는지, 정의 된 후에는 정의되지 않았는지 확인해야합니다. 이것은 깨뜨릴 수있는 많은 방법입니다. 함수 이름을 바꿉니다. 이름이 찍혔다. –
@Rob 네이피어는 답을 만들어주십시오. 그것은 좋은 것이고 투표를하고 싶습니다. 나는 또한이 질문을 대답하기를 원한다. 그래서 나는 그것이 "대답 : 0"목록에서 벗어나기를 원한다. 그리고 Q/A 쌍은 Q/의견 쌍보다 훨씬 좋네요. 그리고 당신은 아주 옳습니다. – Yunnosch