기존 답변은 유형의 크기에 따라 "컴파일 타임 어설 션"의 효과를 얻는 방법을 보여줍니다. 이 특별한 경우 OP의 요구를 충족시킬 수 있지만 유형의 크기에 따라 조건부 전처리 기가 실제로 필요한 다른 경우가 있습니다. 방법은 다음과 같습니다.
다음과 같은 작은 C 프로그램을 작성하십시오.
/* you could call this sizeof_int.c if you like... */
#include <stdio.h>
/* 'int' is just an example, it could be any other type */
int main(void) { printf("%zd", sizeof(int); }
컴파일하십시오. 위의 C 프로그램을 실행하고 출력을 캡처하는 좋아하는 스크립팅 언어로 스크립트를 작성하십시오. 해당 출력을 사용하여 C 헤더 파일을 생성하십시오. 예를 들어 Ruby를 사용 중이라면 다음과 같이 보일 수 있습니다.
sizeof_int = `./sizeof_int`
File.open('include/sizes.h','w') { |f| f.write(<<HEADER) }
/* COMPUTER-GENERATED, DO NOT EDIT BY HAND! */
#define SIZEOF_INT #{sizeof_int}
/* others can go here... */
HEADER
그런 다음 Makefile 또는 기타 빌드 스크립트에 규칙을 추가하면 위의 스크립트를 실행하여 sizes.h.
sizes.h크기에 따라 전 처리기 조건을 사용해야하는 모든 곳에 포함 합니다.
끝난!
( ./configure && make프로그램을 빌드하기 위해 타이핑 한 적이 있습니까? configure기본적으로 위와 같은 스크립트는 무엇입니까? )