3
readdir
에 의해 반환 된 파일이 디렉토리인지 확인하고 싶습니다. DT_DIR
상수를 사용하여 시도했으나 (man readdir
이라고 표시됨) 정의되지 않았습니다. 그것을 얻기 위해 어떤 파일을 포함시켜야합니까? 그들은, 당신은 그 정의를 얻기 위해 정의 된 _BSD_SOURCE
기능 테스트 매크로가 필요DT_DIR undefined
gcc a.c --std=c99 -Wall
흠, 고마워요. 하지만 항상 괜찮은 것은 아닌지 생각합니다. 이 상수를 변경하려면 다른 것을 바꿀 수 있기 때문입니다. 다른 방법으로하는 방법입니까? 내 상수는 괜찮습니까 (정말로 그렇게 생각하지 않습니다) 또는 다른 OS에서 변경 될 수 있습니까? (예 : 디렉토리가있는 나를 위해 4) – RiaD
PS :'-D_BSD_SOURCE'이면 충분합니다. 여기에 값을 입력 할 필요가 없습니다. – RiaD
'-D_BSD_SOURCE'를 사용하면 상수가 변경되지 않습니다. BSD에서 제공되고 POSIX 또는 표준 C가 아닌 추가 정의 및 함수를 가져옵니다. 코드에서 요구하는 경우에는 이식 할 수 없습니다. 이식성을 원한다면'struct dirent'의'd_type' 필드에 의존하지 말고 대신'stat'를 사용하십시오. '4 '를 하드 코딩하는 것은 나쁜 생각입니다. – Mat