티스토리 뷰
struct CHAR_COLLECTION_DATA { int CharID; int Value; int ValueCode; }; CHAR_COLLECTION_DATA CollectionData = {m_CharID, m_Value, m_ValueCode };
이런 코드가 있었다.
기능을 추가 하시려다보니 습관적으로
struct CHAR_COLLECTION_DATA { int CharID; int ClassID; // 다른 변수를 중간에 추가함. int Value; int ValueCode; }; CHAR_COLLECTION_DATA CollectionData = {m_CharID, m_Value, m_ValueCode };
같은 코드고 컴파일 오류도 없지만 원래 코드와 다르게, CharID, Value, ValueCode를 채우지 않고, CharID, ClassID, Value에만 값을 채우는 코드가 되어버렸다.
물론 사용 코드를 전부다 훓어보지 않은 문제가 있긴 하지만, 컴파일 오류로 강제되지 않은 초기화도 좋은 제약은 아니다.
struct CHAR_COLLECTION_DATA { int CharID; int ClassID; // 다른 변수를 중간에 추가함. int Value; int ValueCode; CHAR_COLLECTION_DATA() : CharID(0) , ClassID(0) , Value(0) , ValueCode(0) { } CHAR_COLLECTION_DATA(int charID, int classID, int value, int valueCode) : CharID(charID) , ClassID(classID) , Value(value) , ValueCode(valueCode) { } };
기존 코드가 이렇게 짜여져 있었다면, 기존 코드였던
CHAR_COLLECTION_DATA CollectionData(m_CharID, m_Value, m_ValueCode);
는 컴파일 오류를 일으킨다.
자연스레
CHAR_COLLECTION_DATA CollectionData(m_CharID, m_ClassID, m_Value, m_ValueCode);
컴파일 오류가 나는 부분을 다 위와 같이 고치게 될 것이다.
물론 모든 상황에서 주의 깊게 코드를 찾아보고 고치면 얼마나 좋겠냐 만은, 커버리지는 높을수록 좋은 것.
컴파일 오류로 막을 수 있는 습관은 갖추는 게 좋다.
구조체 이니셜라이저는 가급적 자체 하자.
'C++ > General' 카테고리의 다른 글
윈속 에러 코드 값 (0) | 2008.02.24 |
---|---|
winsock.h 중복 재정의 에러, error C2011: 'fd_set' : 'struct' type redefinition (3) | 2008.02.23 |
오버로딩과 오버라이딩 (3) | 2008.01.22 |
Interlocked 계열 함수 (2) | 2008.01.18 |
시간 관련 함수 모음 (0) | 2008.01.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- TDD
- 조엘 온 소프트웨어
- 디자인 패턴
- CppSQLite
- 루비
- 바로가기 프로그램
- svn
- SDL
- EasyExec
- TraceRoute
- 엘키
- 멀티스레드
- ruby
- 게임데브포에버
- ftp
- 루비 온 레일즈
- 디버깅
- perfmon
- Ruby on Rails
- 리버스 엔지니어링
- Rails
- SQLite Spy
- 임백준
- RoR
- EzShortcut
- MS-SQL
- 게임개발포에버
- 좋은 프로그래머
- c언어
- NDC2013
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함