문자 타입을 알고싶은데요. C++ 라이브러리 손쉽게 검색하는 방법좀 알려주세요.
Visual C++은 MSDN을 제공해서 라이브러리를 검색할 수 있도록 하는데, GCC는 라이브러리 검색을 위해 제공하는 프로그램이 없어서 좀 불편합니다. cstdio라이브러리의 printf가 어떤 파일에서 어떻게 선언되고 정의돼 있는지를 알아내는 명령어가 있을까요? 여러 프로그래머께서는 라이브러리를 어떻게 검색하시는지 궁금합니다. 혹시 find를 사용하시는지요. grep 을 사용하시나요?
그리고 wchar_t의 타입재정의문을 보고싶은데요. unsigned int를 재정의한 것인가요?
그리고 다음과 같은 typedef는 무슨 뜻인가요? 한 행에 여러 타입명을 열거하니 알아들을 수가 없네요.
typedef WCHAR *PWCHAR, *LPWSTR, *PWSTR;
typedef CONST WCHAR *LPCWCH, *LPCWSTR, *PCWSTR;
typedef CHAR *PCHAR, *LPSTR, *PSTR;
typedef CONST CHAR *LPCCH, *LPCSTR, *PCSTR;
그리고 gcc에서 TCHAR을 쓰려면 어떤 헤더를 포함해야 할까요? 그냥 헤더 없이 TCHAR을 쓰면 TCHAR이란 타입이 없다고 하는군요. 지원이 안되는건가요? 윈도우에서만 되는 것인지요?
그리고 제 시스템의 로케일이 ko_KR.UTF-8입니다. 그리고 작성한 C++소스 파일을 저장할 때 사용하는 인코딩도 동일합니다. 검색해본 바에 따르면 컴파일의 설정에 따라 wchar_t가 의미하는 인코딩이 다를 수 있다고 하던데요. 그 내용에 의하면 제 컴파일은 wchar_t의 인코딩이 utf-8인 것으로 추론할 수 있습니다. 그래서 그런지 utf-16문서를 fgetwc로 제대로 읽어들이지 못합니다. 파일의 fopen으로 열리긴 합니다. utf-16 문서를 읽기 위해서는 컴파일의 문자 인코딩 설정을 utf-16으로 바꿔야 하나요? 만약 그렇다면 컴파일 문자 인코딩을 어떻게 바꿔야 하는 건가요?
ctags, cscope
ctags, cscope 사용해보시고요.
typedef 를 제일 잘 이해하는 방법은 typedef를 제거한 구문을 먼저 생각해보세요.
typedef int abc;
이렇게 되어 있다면
int abc;
라고 해석하면 변수 abc가 나오겠죠, 그러나 typedef 때문에 변수를 정의하는 것이 아니라 형을 정의한다 생각하시고
abc x;
이런 식으로 abc와 x가 1:1로 사용되는구문에서와 같이 x의 형을 abc라 생각하면됩니다.
---
http://coolengineer.com
ctags 좋네요.
ctags 사용하기 좋은 것 같습니다. 사용법도 어렵지 않고요. 감사합니다. 그런데 검색하다 보니 매크로로 정의된 함수는 탐색을 못 하던데요. __(underscore)로 시작하는 함수 말입니다. __는 더 이상 C의 소스 차원에서 제공되는 부분이 아니라서 그런가요? 무슨 기계어로 지원이 되는 부분인가요? printf를 찾아보면 __printf_chk까지만 검색이 되고요. __printf_chk는 더 이상 검색이 안됩니다. 감사하긴 한데. 저 마지막을 볼 수 없다는 것이 아쉽네요. 어떻게 봐야하나. 어떻게 알 수 있고요?
ctats 참조 사이트
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Development/Env/UsedCtag
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
> 그리고 gcc에서 TCHAR을 쓰려면 어떤 헤더를
> 그리고 gcc에서 TCHAR을 쓰려면 어떤 헤더를 포함해야 할까요? 그냥 헤더 없이 TCHAR을 쓰면 TCHAR이란 타입이 없다고 하는군요. 지원이 안되는건가요?
네
> 윈도우에서만 되는 것인지요?
네
> 그리고 제 시스템의 로케일이 ko_KR.UTF-8입니다. 그리고 작성한 C++소스 파일을 저장할 때 사용하는 인코딩도 동일합니다. 검색해본 바에 따르면 컴파일의 설정에 따라 wchar_t가 의미하는 인코딩이 다를 수 있다고 하던데요.
컴파일러 또는 C library에 따라 달라질 수 있습니다.
> 그 내용에 의하면 제 컴파일은 wchar_t의 인코딩이 utf-8인 것으로 추론할 수 있습니다.
아마 아닐 겁니다.
glibc를 쓰면 wchar_t는 32 bit가 되며, 딱히 어떤 encoding을 쓰는지는 보장되어 있지 않습니다. 대개 UCS-4LE나 UCS-4BE를 쓰긴 합니다만.
> 그래서 그런지 utf-16문서를 fgetwc로 제대로 읽어들이지 못합니다. 파일의 fopen으로 열리긴 합니다. utf-16 문서를 읽기 위해서는 컴파일의 문자 인코딩 설정을 utf-16으로 바꿔야 하나요? 만약 그렇다면 컴파일 문자 인코딩을 어떻게 바꿔야 하는 건가요?
특별한 경우 아니면 파일 등 외부에 read/write할 경우, wide family는 쓰지 않는 것이 좋습니다. iconv나 다른 library를 쓰는 것을 권합니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기