const char* 배열에 대해서...
글쓴이: bloody / 작성시간: 수, 2011/05/11 - 8:12오후
effective c++이라는 책에서 보니 define을 쓰지말고 const를 쓰라고 나와 있는데요...
근데 다음 상황을 보세요
#define PATH "c:\\desktop\\" #define FILE "test.dat" main() { CString test = PATH FILE; }
define 은 위처럼 사용가능하죠
근데 const는요
const char * const path = "c:\\desktop\\"; const char * const file = "test.dat"; main() { CString test2 = path file; <===== 에러남 }
char배열은 그냥 define을 쓰는게 진리인가요?
Forums:
이건 진리라고 외울 문제가 아니네요. 분명 앞의
이건 진리라고 외울 문제가 아니네요.
분명 앞의 코드를 보면 전처리기가 자동으로 문자열을 붙이는 기능을 사용하는건데, 그걸 책에서 본걸 진리라고 외우고 그대로 억지로 끼워 맞추려고 하니까 밑에 코드처럼 말도 안되는 코드가 나오는거죠.
용도가 달라요. 용도가... define 은 컴파일
용도가 달라요. 용도가...
define 은 컴파일 시에 단순한 치환을 해 줄 뿐이고,
const 의 경우는 엄연한 하나의 타입에 대한 modifier 입니다.
일단
CString을 사용하신것 부터 기본적으로 Visual C++ MFC용 코드입니다. 표준에 상관없이 플랫폼에 의존하는 코드만 계속 쓰실 거면 #define도 나쁘지는 않을 것 같네요. 하지만 다른사람들도 보는 코드를 원한다면 const char* 와 함께 C++ 표준에 대해서도 공부를 하시는 것이 좋을 것 같습니다.
어째서 define이 표준에 상관없이 플랫폼에
어째서 define이 표준에 상관없이 플랫폼에 의존하는 코드가 되는지 설명 부탁드립니다.
댓글 달기