최근이 코드에 온 :가변 인수 길이로 '정의'를 사용하지 않는 좋은 이유가 있습니까?
#define LOG(type, str) printf(str)
#define LOG1(type, str,arg1) printf(str,arg1)
#define LOG2(type, str,arg1,arg2) printf(str,arg1,arg2)
#define LOG3(type, str,arg1,arg2,arg3) printf(str,arg1,arg2,arg3)
#define LOG4(type, str,arg1,arg2,arg3,arg4) printf(str,arg1,arg2,arg3,arg4)
코드가 최근에 작성되었습니다. 그래서 나는 그것이 C99로 컴파일 될 수 있다고 생각합니다.
제 질문은 가변 인수 길이가있는 간단한 매크로를 사용하지 않는 이유는 무엇입니까? 우리는 단지 LOG
매크로와 그 이상으로 제한 할 것입니다. 예를 들어, LOG5
, LOG6
등을 추가 할 필요가 없습니다. 스택 추적이 발생하거나 메모리가 부족하면이 솔루션을 유용하게 사용할 수있는 무언가가 발생합니다.
필자는 최소한의 라인을 얻을 수 있다면 미니멀리스트 다. 하지만 나는 여기서 뭔가를 놓치고 있니? 이 의도적 이었습니까 아니면 잘못된 코딩 방법 이었습니까?
AFAIK 코드가 C99에서 타겟팅되지 않으면 AFAIK로 매크로를 작성한 유일한 방법입니다. 또한 : 지구상에서 왜 이것이 기능이 아닌지 나는 모른다. – Jon
@ 존, 릴리스 빌드에 로그가 필요 없다고 가정하면 전체 함수 호출을 저장할 수 있습니다. '__naked__' 가지 마세요. 아, 그리고 이것도 로그 라인을 위해 모든 문자열 리터럴을 닦아 버릴 것입니다. –
@RomanSaveljev : 함수를 저장하는 것이 * 중요하다고 먼저 설득해야합니다. :-) – Jon