2011-02-25 2 views
3

Eclipse CDT를 사용하여 C 프로그램을 작성하고 있습니다. for 루프를 다음과 같이 초기화하고 싶습니다 ...DT_REG 선언되지 않음 (이 함수에서 처음 사용) 및 -std = c99

for(int i = 0; i < 5; i++) 

그래서 gcc 명령 줄에 -std = c99를 추가했습니다. 이는 오류를 던지고의 부작용을 갖는다 : 선의 'DT_REG'미표시 (이 기능에서 제 사용)가 DT_REG dirent.h를 정의되어

if(dir_ent->d_type != DT_REG) 

(포함된다). 코드는 gcc 명령 줄에서 -std = c99 없이는 정상적으로 컴파일됩니다. 내가 뭘 놓치고 있니?

답변

3

-std=gnu99은 어떻게됩니까? d_type 필드가 비표준 (the GNU libc manual page "Directory Entries" 참조) 인 것처럼 보이므로 디렉토리 항목 유형을 나타내는 열거 형이 엄격하게 호환 모드에서는 사용할 수 없습니다. 형식 값을 가져 오려면 _BSD_SOURCE (또는 _GNU_SOURCE)을 정의해야합니다.

+0

gnu99 트릭을 만들었습니다. 링크 주셔서 감사합니다, 그것은 명확한 것들을 도왔습니다. –

관련 문제