강사가 작성한 모든 C 파일이 첫 번째 줄에서 단일 #으로 시작하는 이유는 무엇입니까?
C 코스 노트를 살펴보고 모든 C 프로그램 소스 파일은 프로그램 #
의 첫 번째 줄 에서 단일로 시작 합니다.
그런 다음 빈 줄이 있고 그 뒤에 다른 main
기능이 뒤 따릅니다 .
이유는 무엇입니까 #
?
(지금은 기한이 지났고 실제로 그 장을 요청할 수는 없습니다.)
예를 들면 다음과 같습니다.
#
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
와우,이 요구 사항은가는 길에 다시 1970 년대에 있습니다.
에서 초기 에는 호출하기를 원한다면 사전 표준화 C의 일, 전처리 , 당신은을 써야했다 #
소스 파일의 첫 번째 행의 첫 번째 일이있다. 파일 맨 위에 a 만 쓰면 #
다른 전 처리기 지시문을 유연하게 배치 할 수 있습니다.
12. 컴파일러 제어 라인
[...] 전 처리기 (preprocessor)가 호출되게하려면 프로그램의 첫 번째 행이 #으로 시작해야합니다. 전처리 기는 널 (null) 라인을 무시하므로이 라인에는 다른 정보가 필요하지 않습니다.
그 문서는 큰 글을 읽게합니다. (그리고이 질문에 미친 고양이처럼 뛰어 넘을 수있었습니다.)
나는 그것이 단순히 감상적 인 강사라고 생각합니다 .ANSI C 이후 확실히 필요하지 않았습니다.
아무것도하지 않는다
C / C ++의 ISO 표준 기준 :
양식의 전처리 지시문
# new-line
효과가 없습니다.
따라서 오늘날의 컴파일러에서 빈 해시는 아무것도하지 않습니다 ( new-line ;
기능이없는 것처럼 ).
추신 : 사전 표준화 된 C 에서 # new-line
중요한 역할을했으며 C @ 전처리기를 호출하는 데 사용되었습니다 (@Bathsheba가 지적한대로). 따라서이 코드는 해당 기간 내에 작성되었거나 습관에서 비롯된 것입니다.
C의 컴파일 프로세스에 대해 알아야합니다. 소스 코드가 실행 가능한 이진 코드 (File)로 변환되는 방식을 "알아야"하기 때문입니다.
컴파일 프로세스에서 C 소스 코드는 전 처리기 섹션을 교차해야합니다. 그러나 컴파일러에게 코드를 사전 처리하도록 지시하는 방법은 무엇입니까? ... Time # Symbol은 컴파일러의 사전 처리 표시기에 도입되었습니다.
예를 들어 #define PI 3.141
소스 코드에 있습니다. 그런 다음 전처리 세션 후에 변경됩니다. 즉, 모든 PI가 3.141로 변경됩니다.
이와 같이 #include <stdio.h>
표준 I / O 함수가 소스 코드에 추가됩니다. 리눅스 머신을 가지고 있다면 다음과 같이 컴파일하십시오 gcc -save-temps source_code.c
. 그리고 컴파일러 출력을 참조하십시오.
......좋은.....
'development' 카테고리의 다른 글
도 커가 도커 데몬에 연결할 수 없습니다 (0) | 2020.02.19 |
---|---|
배열을 객체로 변환 (0) | 2020.02.19 |
ng-if와 ng-show / ng-hide의 차이점은 무엇입니까 (0) | 2020.02.19 |
스칼라의 사례 클래스와 클래스의 차이점은 무엇입니까? (0) | 2020.02.19 |
CSS-부동 자식 DIV 높이를 부모 높이로 확장 (0) | 2020.02.19 |