티스토리 뷰
Visual Studio 2012
가변인수를 알아보고 이를 활용해 로그를 저장해보자.
대표적인 가변인수를 다루는 함수인 printf.
printf("%d %s", n1, "Hello");
위의 함수 인수들 중 처음 "" 부분인 format을 제외하고는 뒤에 변수의 개수가 일정치 않다.
이를 가변 인수라 하고, 위의 함수는 가변인수 함수라고 한다.
1. 가변인수 함수의 기본적 형태
자료형 함수이름(자료형 고정인수, ...)
{
va_list va;
va_start(va, 고정인수);
va_arg(va,자료형);
va_end(va);
}
주의사항
1) 고정인수는 무조건 하나 이상이어야 한다.
2) 고정인수가 두개 이상일 경우, va_start에는 가변인수 바로 앞인 마지막 고정인수를 넣어야한다.
2. 가변인수 사용하기(로그 저장)
header.h
// 가변인수 활용 헤더 포함 #include <stdarg.h> void AddLog(char* format, ...);
main.cpp
void AddLog(char* format, ...) { char buf[512]="Result: "; va_list va; va_start(va, format); vsprintf(buf+strlen(buf), format, va); va_end(va); puts(buf); } int main() { int a,b; a=1; b=2; AddLog("%d + %d = %d", a,b,a+b); return 0; }
이렇게 작성하였을 경우 출력은
Result: 1 + 2 = 3 이란 값이 정상적으로 출력된다.
vsprintf의 인자들을 살펴보면
1) buf+strlen(buf)를 통해 초기에 값을 적어놓은 "Result: "이후 부터 format을 저장할 수 있게 한다.
2) 512-strlen(buf)를 통해 값을 저장할 최대 바이트 수를 정한다.
3) format과 va는 고정인자와 가변인자이다.
끝
'Programming > MFC(C++)' 카테고리의 다른 글
[MFC] 대화상자 트레이 아이콘 컨트롤하기(TrayIcon) (0) | 2018.12.11 |
---|---|
[MFC] 로그를 파일로 저장하기 (0) | 2018.12.10 |
[MFC] 스레드 생성시 구조체 인자 넣기 (0) | 2018.12.07 |
[MFC] 레지스트리(Registry) 활용하여 값 저장/불러오기 (0) | 2018.11.29 |
[MFC] 스레드(Thread) 활용하기 (5) | 2018.11.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 전자신고파일설명서
- MFC ADO
- CMFCBUTTON
- 항공알파벳
- 법정동코드
- 해외송금확인
- Sticky Notes Loading
- 부가가치세
- MFC Modeless
- MXCOMPONENT
- 청년내일채움공제 만기신청
- 프로세스이름변경
- 전자신고변환
- 모달리스 다이얼로그
- 소켓
- 스쿠트항공 환불받기
- 청년내일채움공제
- #자동업데이트
- sqlite3
- c++
- 세금계산서합계표양식
- MFC
- 스티커메모로드중
- ADO
- SendMessage
- 모달리스
- MSSQL
- Modeless
- ADODB
- 부가가치세전산매체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함