320x100
C언어에 가변인자라는 개념이 존재하는데 파이썬에서 *args 또는 **kargs와 같은 개념이라 생각할 수 있다.
백문이 불여일타
사용환경 : debian gcc (컴파일러에 따라 조금씩 다를 수 있으니 참고)
#include <stdio.h>
#define LOG(msg, ...) printf("%s파일에서 %s함수에서 %d번째 줄 메시지 : " msg "\n",__FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__)
void main(){
LOG("message %d %f %s",999, 3.14, "Hello");
}
보통 디버깅을 위한 LOG문을 위와 같이 매크로함수로 정의하여 사용한다.
(매크로 함수뿐만 아니라 일반적인 함수에서도 사용이 가능하다)
printf를 사용하면 사용할 때마다 __FILE__, __FUNCTION__, __LINE__을 입력해야 할뿐더러 매개변수도 매번 같은 개수일 수 없기 때문에 가변인자 ##__VA_ARGS__를 사용한다.
특이한 점은 string 인자인 msg의 양옆에 쉼표 또는 +기호가 없다는 점인데, 이 문법은 기회가 되면 알아봐야겠다.
물론 귀찮아서 언제 알아볼지는 모른다.
컴파일러에 따라 가변인자의 선언(정의?) 문은 다를 수 있으므로 검색하여 사용하자.
반응형
'프로그래밍 > C,C++,C#' 카테고리의 다른 글
[C,C++,C#] 전처리 ##연산자 (0) | 2023.06.04 |
---|---|
[C] 공용체(union) 변수 사용 (feat. 콜론 연산자) (0) | 2023.04.07 |
[Unity] Google Play Console에서 광고 ID 사용을 선언해야합니다. (0) | 2022.11.12 |
[C#.NET] 폼 최대창으로 로드하기(창 넓이, 높이 값 구하기) (0) | 2022.09.28 |
[C# .Net] FlowLayoutPanel Dock Fill 사라짐 해결 (0) | 2022.07.12 |
댓글