memset() 함수를 쓰기 위해
include 해야 하는 헤더 파일 때문에 종종 실수를 한다. 나는 아주 예전부터 <memory.h>를 사용해 왔고 대부분의 컴파일러에서는 문제를 일으키지 않았다.
내일 code release를 해야 하는 라이브러리가 있어서 여러
컴파일러에서 최종 문법 테스트를 한 후, 내가 라이선스를 가지지 못한 나머지 컴파일러에 대해서는 다른
분께 빌드를 의뢰했다. 그리고 의뢰 받은 쪽에서는 저
<memory.h>라는 것 때문에 오류가 난다는 통보를 해 줬다. 그래서 나는
즉시 <string.h>로 바꾸라고 메시지를 줬고 나머지 모두 빌드에 성공했다. <memory.h>를 못 찾을 때는 <string.h>를 include하면 된다는 것은 이전부터 알고 있었기 때문에 그렇게 대응한 것이지만 그때까지만 해도 그건 컴파일러의
잘 못이라고만 생각하고 있었다.
자리에 돌아와서 man page와
wikipedia에서 관련된 표준에 대해 조사를 해 보았다. 그런데 전부 다 표준은 <string.h>라고 나와 있었다. 매뉴얼을 제대로 보지
않은 내 잘 못이긴 하지만 대응되는 헤더가 그다지 직관적이지는 못하다는 생각도 동시에 든다.
Posted by 안영기