문자 타입을 알고싶은데요. C++ 라이브러리 손쉽게 검색하는 방법좀 알려주세요.

dltkddyd의 이미지

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으로 바꿔야 하나요? 만약 그렇다면 컴파일 문자 인코딩을 어떻게 바꿔야 하는 건가요?

pynoos의 이미지

ctags, cscope 사용해보시고요.
typedef 를 제일 잘 이해하는 방법은 typedef를 제거한 구문을 먼저 생각해보세요.

typedef int abc;
이렇게 되어 있다면
int abc;
라고 해석하면 변수 abc가 나오겠죠, 그러나 typedef 때문에 변수를 정의하는 것이 아니라 형을 정의한다 생각하시고
abc x;
이런 식으로 abc와 x가 1:1로 사용되는구문에서와 같이 x의 형을 abc라 생각하면됩니다.

dltkddyd의 이미지

ctags 사용하기 좋은 것 같습니다. 사용법도 어렵지 않고요. 감사합니다. 그런데 검색하다 보니 매크로로 정의된 함수는 탐색을 못 하던데요. __(underscore)로 시작하는 함수 말입니다. __는 더 이상 C의 소스 차원에서 제공되는 부분이 아니라서 그런가요? 무슨 기계어로 지원이 되는 부분인가요? printf를 찾아보면 __printf_chk까지만 검색이 되고요. __printf_chk는 더 이상 검색이 안됩니다. 감사하긴 한데. 저 마지막을 볼 수 없다는 것이 아쉽네요. 어떻게 봐야하나. 어떻게 알 수 있고요?

ctats 참조 사이트
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Development/Env/UsedCtag

본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.

cinsk의 이미지

> 그리고 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를 쓰는 것을 권합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.