다음을 사용하여 특정 파일 형식을 확인할 때 file
C++ 파일을 C 파일로 잘못 표시하는 것으로 나타났습니다.
$ file User.*
User.cpp: C source, ASCII text
User.h: C++ source, ASCII text
User.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
헤더 파일은 올바르게 인식하지만 cpp 파일은 인식하지 못하는 이유는 무엇입니까?
답변1
명령의 매뉴얼 페이지에서 file
,
file
이 명령은 실제로 파일 형식을 결정하기 위해 3가지 테스트를 수행합니다.
첫 번째 테스트
파일 시스템 테스트는 stat(2) 시스템 호출의 반환 결과 검사를 기반으로 합니다.
두 번째 테스트
매직 넘버 테스트는 특정 고정 형식의 데이터가 포함된 파일을 확인하는 데 사용됩니다.
세 번째 테스트
언어 테스트는 파일의 처음 몇 블록 내 어디에나 나타날 수 있는 특정 문자열을 찾습니다(name.h 참조). 예를 들어, struct 키워드가 C 프로그램을 나타내는 것처럼 .br 키워드는 파일이 troff(1) 입력 파일일 가능성이 가장 높다는 것을 나타냅니다.
명령의 출력은 file
일반적으로 성공적인 테스트 결과를 기반으로 합니다.
이제 C++ 프로그램이 이렇게 시작하고 세 번째 테스트가 성공했다고 가정해 보겠습니다.
#include <iostream.h>
bla
bla
세 번째 테스트에 따르면 키워드는 #include
해당 유형을 구체적으로 지정합니다.씨프로그램이 있지만소비자 보호 계획프로그램을 보유하고 있습니다. 이제 확인해 보면,
$ file example.cpp
example.cpp: ASCII C program text
이제 객체 지향 개념은 C++에만 고유합니다. 특정 파일을 생성해보자C++.
C++ 프로그램을 시작합니다.
Class something
{
}
bla
bla
이제 발행할 때
$ file example.cpp
출력은,
example.cpp: ASCII C++ program text