cross-reference generator | cflow, cxref, calls, cscope, xscope, ixfw |
C beautifier/pretty printer | cb, indent, GNU indent, vgrind |
버전/설정 관리 | CVS, RCS, SCCS |
C source obfuscator | obfus, shroud, opqcp |
“make” dependency generator | makedepend, cc -M, cpp -M |
compute code metrics | ccount, Metre, lcount, csize, |
C lines-of-source counter | wc, grep -c ";" |
C declaration aid | comp.sources.unix의 Volumn 14. [K&R2] 참고 |
tracking down malloc problem | 질문 18.2 참고 |
“selective” C preprocessor | 질문 10.18 참고 |
language translation tool | 질문 11.31 참고 |
C verifier (lint) | 질문 18.7 참고 |
C compiler | 질문 18.3 참고 |
(당연히 이 테이블이 모든 것을 나타내 주는 것은 아닙니다; 만약 여기에 나온 것 이외에 더 많은 것을 알고 있다면 관리자에게 연락하기 바랍니다.)
Usenet comp.compilers와 comp.software-eng에서 여러 툴에 대한 다른 목록과, 논쟁을 찾아 볼 수 있습니다.
http://www.qucis.queensu.ca/Software-Engineering/Cmetrics.html
GNU indent에 관한 것은 아래 URL을 참고하시기 바랍니다:
http://www.gnu.org/software/indent/
A number of commercial debugging tools exist, and can be invaluable in tracking down malloc-related and other stubborn problems:
PCC라는 쉐어웨어(shareware) 컴파일러도 있으며, 이름은 PCC12C.ZIP입니다.
MS-DOS용 컴파일러로 매우 싼 가격에 구할 수 있는 Power C는 Mix Software에서 만들었고, 주소는 1132 Commerce Drive, Richardson, TX 75801, USA, 전화번호는 214-783-6001입니다.
최근에 개발된 컴파일러로는 lcc가 있습니다. Anonymous FTP로
ftp.cs.princeton.edu의 pub/lcc에서 구할 수 있습니다.
ftp.hitech.com.au의 hitech/pacific에서 쉐어웨어 MS-DOS용 컴파일러를 구할 수 있습니다. 사고파는 목적이 아니라면 등록은 할 필요가 없습니다.
매킨토시 용으로 구할 수 있는 쉐어웨어 컴파일러는 알려진 것이 없습니다.
comp.compilers archive에는 compiler, interpreter, grammer등에 대한 굉장히 많은 정보가 들어 있습니다. (FAQ 리스트를 포함한) comp.compilers archive는 iecc.com에서 근무하는 moderator인 John R. Levine씨에 의해 관리되고 있습니다. 사용 가능한 컴파일러들과 이에 관련된 자료는 Mark Hopkins, Steven Robenalt, 그리고 David Muir Sharnoff씨에 의해 관리되며 ftp.idiom.com의 pub/compilers-list/에 있습니다. (rtfm.mit.edu 또는 ftp.uu.net의 comp.compilers 디렉토리에서 news.answers에 관한 아카이브도 참고하기 바랍니다; 질문 20.40도 참고하기 바랍니다.)
http://www.gnu.org/software/gcc/
lcc는 표준 C 언어로 씌여진, 이식성이 매우 우수한(retargetable) C 컴파일러이며, ALPHA, SPARC, MIPS R3000, Intel x86용 코드를 만들어 냅니다. lcc는 소스가 다른 컴파일러에 비해 상대적으로 짧고 읽기가 쉬워서 컴파일러 교육용으로 많이 쓰입니다. 아래 사이트를 방문하시면 좀 더 많은 정보를 얻을 수 있습니다:
http://www.cs.princeton.edu/software/lcc/
덧붙여 질문 16.5, 16.8, 18.7도 참고하시기 바랍니다.
#ifdef lint
안에 #define
을 써서
malloc()에 대한 `pseudo-implementation'을 만들어 두는 것입니다.
그렇지만 정말로 중요한 경고 메시지도 보여주지 않을 가능성이 있기 때문에
좋은 방법이라 할 수는 없습니다. 차라리 `grep -v'를 써서 그런 메시지를
없애버리는 것이 훨씬 더 간단하고 안전할 것입니다.
(그러나 `lint'가 보여주는 많은 메시지들을 무시하는 습관을 들이는 것은
매우 위험합니다. 어느날 중요한 메시지를 못 보고 넘어가는 경우도
생길지 모릅니다.)
Gimpel Software 3207 Hogarth Lane Collegeville, PA 19426 USA (+1) 610 584 4261 gimpel@netaxs.com
Unix System V release 4의 lint는 ANSI 호환입니다. 그리고 UNIX Support Labs나 System V 판매업체에 의해 각각 다른 패키지 형태 (다른 C tool들이랑 같이 번들 형태)로 제공됩니다.
고수준으로 문법을 검사해주는 ANSI 호환의 다른 lint로는 `LCLint'가 있으며, larch.lcs.mit.edu의 pub/Larch/lclint에서 구할 수 있습니다 (via anonymous ftp).
그리고 최근에 제공되는 많은 컴파일러들은 lint가 제공하는 것처럼 자세히 소스를 분석하고 알려주는 기능이 있습니다. (`gcc'의 경우는 `-Wall -pedantic' 옵션을 쓰면 됩니다.)
http://lclint.cs.virginia.edu/
2002년 이후, lclint는 splint로 이름을 바꾸었으며, 홈페이지는 다음과 같습니다:
http://www.splint.org/
아닙니다. 무엇보다도 prototype은 존재하고 있고, 올바로 주어질 때에만 동작합니다; 잘못된 prototype은 아예 없는 것이 낫습니다. 두번째로 lint는 여러 소스 파일들을 읽고 일관성을 검사해 줄 수 있고, 함수뿐만 아니라 데이터 선언까지 검사해 줍니다. 게다가 lint와 같이 시스템에 독립적인 프로그램을 사용하면 좀더 정확한 분석을 받을 수 있기 때문에, 컴파일러의 특별한 기능이나, 특정 시스템 기능에 의존하지 않는, 이식성이 높은 프로그램을 작성하는데 큰 도움이 됩니다.
`lint'를 쓰는 대신 function prototype을 쓰길 원한다면, 먼저 여러 파일들이 같은 prototype을 지녔는지 검사하고, 정확한 prototype을 썼는지 검사해야 합니다. 질문 1.7과 10.6을 참고하기 바랍니다.
http://www-h.eng.cam.ac.uk/help/tpl/languages/C/teaching_C/
http://www.strath.ac.uk/CC/Courses/CCourse/CCourse.html
http://www-isis.ecs.soton.ac.uk/computing/c/Welcome.html
http://www.eskimo.com/~scs/cclass/cclass.html
[Disclaimer: 여기에 있는 많은 tutorial들은 저자가 다 검토해 본 것은 아닙니다. 또한 몇 가지 에러가 있는 것으로 압니다. 이 글들에 저자의 이름이 들어 있기는 하지만 어떠한 것도 보증할 수 없습니다. 또한 이런 종류의 글들은 대개 시간이 지날 수록 값어치가 떨어지기 때문에 여러분이 읽으려고 할 때에는 이미 너무 구식의 글일지도 모릅니다.]
http://www.lysator.liu.se/c/index.html
http://www.cyberdiem.com/vin/learn.html
덧붙여 질문 18.10, 18.15c도 참고하시기 바랍니다.
http://www.eskimo.com/~scs/C.html
comp.lang.c의 많은 사람들은 K.N. King씨가 쓴 C: A Modern approach를 추천합니다.
가장 좋은 참고 서적은 C: A Reference Manual이며, Samuel p. Harbison씨와 Guy. L. Steele씨가 썼습니다. 현재 네번째 판이 나와 있습니다.
C 언어를 처음부터 배우기에는 적당하지 않지만 이 FAQ 목록도 출판되어 책으로 나와 있습니다. 이 글의 마지막 “저서 목록”의 [Summit]를 참고하시기 바랍니다.
Mitch Wright씨는 C와 UNIX에 관한 많은 참고서에 대한 목록을 가지고 있으며, ftp.rahul.net의 pub/mitch/YABL에서 구할 수 있습니다.
Scott McMahon씨는 여러가지 비평에 대한 글을 가지고 있습니다:
http://www.skwc.com/essent/cyberreviews.html
`Association of C and C++ Users (ACCU)'는 C/C++에 대한 많은 책들에 대한 논평을 모아 놓았습니다:
http://bach.cis.temple.edu/accu/bookcase http://www.accu.org/accu
이 FAQ 목록의 편집자도 권장하는 많은 책에 대한 정보를 가지고 있습니다; 필요하면 보내드리고 있습니다. 덧붙여 질문 18.9도 참고하시기 바랍니다.
http://www.careferencemanual.com/
http://www.gnu.org/software/glibc/
두 개의 패키지가 각각 1993년 12월에 comp.sources.misc에 1994년 1월에 alt.sources에 게시되었지만, 지금은 없고, 대신 sunsite.unc.edu의 다음 위치에서 얻을 수 있습니다:
pub/packages/development/libraries/defunc-1.3.tar.Z또, lamont.ldgo.columbia.edu에서 “parse” 패키지도 찾아보기 바랍니다. 여러가지 옵션들이 포함되어 있는 S-Lang 인터프리터는 anonymous ftp로 amy.tch.harvard.edu의 /pub/slang에서 구할 수 있습니다. 또한 Cmm (“C-minus-minus”)이라는 쉐어웨어도 있습니다. 덧붙여 질문 18.16, 20.6도 참고하시기 바랍니다.
Software Solutions in C의 Chapter 12, 페이지 235-55에서 파싱/평가하는 코드를 찾아볼 수 있습니다.
comp.compilers 아카이브는 문법에 대한 많은 정보를 가지고 있습니다; 질문 18.3을 보기 바랍니다.
http://www.nullstone.com/The FSF's GNU C (gcc) distribution includes a c-torture-test which checks a number of common problems with compilers. Kahan's paranoia test, found in netlib/paranoia on netlib.att.com, strenuously tests a C implementation's floating point capabilities.
Lars Wirzenius씨의 `public' 라이브러리는 ftp.funet.fi의 다음 위치에 있습니다:
pub/language/C/Publib/덧붙여 질문 14.12, 18.9, 18.13, 18.16도 참고하시기 바랍니다.
http://www.snippets.org/
/systems/unix/bsd-sources/ .... /src/lib/libc/quad/*GNU MP 라이브러리, 또 MIRACL 패키지 (http://indigo.ie/ mscott/ 참고), 그리고 오래된 Unix에서 제공되는 libmp.a를 참고 바랍니다. 덧붙여 질문 14.12, 18.16도 참고하시기 바랍니다.
널리 알려진, 공개를 취지로 한 archive 사이트들을 예로 들면, ftp.uu.net, archive.wustl.edu, oak.oakland.edu, sumex-aim.stanford.edu, 그리고 wuachive.wustl.edu가 있습니다. 이 사이트들은 모두 많은 소프트웨어를 가지고 있으며, 많은 정보들이 공개되어 있습니다. FSF의 GNU 프로젝트의 주 사이트는 prep.ai.mit.edu입니다. 이 사이트는 정말로 바쁘기 때문에 접속이 거부당할 수도 있지만, 그만큼 많은 미러 사이트가 있으므로 참고하기 바랍니다.
인터넷을 통하여 이런 사이트에서 파일을 받을 수 있는 가장 일반적인 방법은 anonymous ftp를 쓰는 것입니다. ftp를 쓸 수 없다면, mail로 ftp를 쓸 수 있게 해주는 ftp-by-mail 서버가 많이 있으므로 이것을 쓰면 됩니다. 게다가 world-wide web (WWW)는 많은 데이터 파일들을 전송하고 인덱싱하고 알리는 데 쓰이고 있으며, 데이터를 얻는 가장 새로운 방법입니다.
그리고 이 질문에 대한 답은 쉬운 편도 있지만, 어려운 것은 세부적인 내용에 대한 것입니다. 즉 쓸 수 있는 archive 사이트들을 모두 알려주거나 이 사이트에서 데이터를 받아보는 방법을 알려 주는 것은 불가능합니다. 인터넷에 접속할 수 있다면 여러분은 이 글보다 훨씬 새롭고 알찬 사이트 및 접근 방법을 이미 알고 있을 것입니다.
또 여러분이 찾고자 하는 것이 어디에 있는 지 알려주기도 쉬운 일이 아닙니다. 이미 이러한 일을 처리할 수 있는 새로운 인덱싱 서비스가 널려 있습니다. Alta Vista나 Excite, Yahoo가 그 예입니다.
유즈넷을 쓸 수 있다면 comp.sources.unix나 comp.sources.misc 뉴스 그룹에 정기적으로 게시되는, 보관 정책과 아카이브에 접속하는 방법을 읽어보시기 바랍니다. 이 그룹의 글을 볼 수 있는 두 개의 사이트를 소개하면:
뉴스 그룹 comp.archives은 여러가지 주제에 대한 많은 글을 게시하고 있습니다. 마지막으로 뉴스 그룹 comp.sources.wanted에서는 소스를 찾고자 할 때 질문을 게시할 수 있는 더 적당한 곳입니다. 그러나 먼저 이 뉴스 그룹의 FAQ 목록을 읽고 어떻게 소스를 찾을 수 있는지 알고 나서 글을 게시하기 바랍니다.
덧붙여 질문 14.12, 18.13, 18.15c도 참고하시기 바랍니다.
http://www.gnu.org/
Seong-Kook Shin