현재 일부 코드를 업데이트하고 있는데 코드가 time_t
변수의 크기에 대한 가정을 signed long
과 동일하게 만드는 지점을 만났습니다. 이 코드는 이전 플랫폼에서 작동합니다 (사실 Coldfire에서 보았 듯이).하지만 우리는 새로운 플랫폼으로 이동하고 있습니다. 그 not well defined.입니다하지만 난 정말 일 현재이 가정에 기초 코드의 모든 라인을 다시하고 싶지 않아 이후전처리 조건에서 sizeof를 사용하는 방법이 있습니까?
는 지금은, 우리가 time_t
변수의 크기에 대한 가정을해야하는지 여부 . 한 번
#if sizeof(time_t) != sizeof(LONG)
#error size assertion failed
#endif
과 함께 할 수 :
이상적으로 내가 좋아하는 일을하고 싶습니다. 나는 sizeof()
이 그런 조건부 전 처리기에서 사용될 수 없다는 것을 알고 있습니다. 그래서 그것은 의문의 여지가 있습니다.
궁금한데, time_t
이 전처리 조건에서 사용할 수있는 바이트 수를 알 수있는 방법이 있습니까? 당신이 컴파일 타임 오류가 발생한 후라면
http://stackoverflow.com/questions/4079243/how-can-i-use-sizeof-in-a-preprocessor-macro 및 http://www.pixelbeat.org/programming/gcc/static_assert를 참조하십시오. html – devnull
[sizeof in define] (http://c-faq.com/cpp/ifsizeof.ct.html) from comp.lang.c faq. – devnull