C로 코딩 중이며 프로그램을 정리하고 깨끗하게 만들려고 main.c에서 모든 기능을 가져 와서 헤더 파일을 모두 포함하는 자신의 .c 파일에 넣습니다. main.c에 모든 .c 파일을 포함하는 것을 잊었습니다. 그리고 프로그램을 컴파일 할 때, 여전히 완벽하게 실행되었습니다! 이것이 어떻게 가능한지? 동일한 폴더에있는 .c 파일을 포함 할 필요가 없습니까? 어쨌든 .c 파일을 안전하게 포함해야합니까?필요한 .c 파일을 포함하지 않고 프로그램을 실행하는 방법은 무엇입니까?
답변
원하는 수의 c 파일을 컴파일 타임에 생성 할 수 있습니다. 오브젝트 파일이 생성 된 다음 실행 파일 바이너리로 연결됩니다.
main.c
의 c 파일을 포함하는 것은 가능하지만 다른 파일로 프로그램을 분할하는 적절한 방법이 아닙니다. 올바른 방법은 모든 파일을 Object Files라는 중간 언어로 repileantant로 컴파일 한 다음 링커 링크 그들 모두는 실행할 수있는 바이너리를 만들기 위해 togaether.
그래서 컴파일은 다음이
file1.c -> file1.o
file2.c -> file2.o
file3.c -> file3.o
file4.c -> file4.o
.
.
.
.
그리고 당신은 한 번에 컴파일러에 모든 C 파일을 전달할 수있는 모든 파일
file1.o file2.o file3.o file4.o ... -> executable-binary-file
소요 연결 단계처럼 간다.
아 컴파일하는 방법에 대한 아주 좋은 설명입니다. 그렇다면 파이썬과 같은 인터프리터 언어는 어떻게 될까요? – James4701
@ James4701 해석 된 언어는 인터프리터를 실행하기 위해 인터프리터가 필요합니다. 파이썬은 파이썬이 스크립트를 더 빨리 실행할 수 있도록 .pyc 확장자를 가진 바이트 코드라는 파일을 생성하지만 해석 된 언어로 작성된 프로그램으로 원시 실행 가능 바이너리를 생성 할 수는 없습니다. –
님의 별도로, main.c의
C 컴파일러가 .o 인 파일로 각이 .c 파일을 컴파일에서 다른 .c 인 파일을 포함을 안하고 있습니다.
그리고 나서 결과 객체 파일을 다시 단일 실행 파일에 넣는 것이 링커의 임무입니다.
감사합니다. 가능한 한 빨리이 답을 표시하겠습니다. – James4701
- 1. 프로그램을 실행하는 데 필요한 C++ 패키지는 무엇입니까?
- 2. .msi 자체에서 .bat를 포함하지 않고 .msi의 .bat를 실행하는 방법은 무엇입니까?
- 3. C# 응용 프로그램을 실행하는 데 필요한 모든 파일을 찾으십시오.
- 4. FormBorderStyle을 사용하지 않고 C# 형식으로 프로그램을 실행하는 방법은 무엇입니까?
- 5. 헤더 파일을 포함하지 않고 컴파일
- 6. 컴파일하지 않고 C++ 코드를 실행하는 방법은 무엇입니까?
- 7. Codeblocks에서 C++ 프로그램을 실행하는 방법은 무엇입니까?
- 8. 다른 설치 프로그램을 포함하지 않고 번들을 작성하는 방법은 무엇입니까?
- 9. Eclipse에서 C++ 프로그램을 컴파일하고 실행하는 방법은 무엇입니까?
- 10. WCF에서 프로그램을 실행하는 방법은 무엇입니까?
- 11. CUDA 프로그램을 실행하는 데 필요한 것
- 12. C++에서 파이썬 파일을 실행하는 방법은 무엇입니까?
- 13. openvms에서 간단한 c 프로그램을 실행하는 방법은 무엇입니까?
- 14. fedora에서 Objective C 프로그램을 실행하는 방법은 무엇입니까?
- 15. C# 데스크톱에서 응용 프로그램을 실행하는 방법은 무엇입니까?
- 16. Anjuta에서 C 프로그램을 단계별로 실행하는 방법은 무엇입니까?
- 17. 하나의 CPU에서만 C++ 프로그램을 실행하는 방법은 무엇입니까?
- 18. C에서 C++ .exe 파일을 실행하는 방법은 무엇입니까?
- 19. C# 인증이 필요한 파일을 피하는 방법은 무엇입니까?
- 20. make 파일을 사용하지 않고 C 브로커 예제 프로그램을 실행하는 방법은 무엇입니까?
- 21. 문자열에서 프로그램을 실행하는 방법은 무엇입니까?
- 22. 시작시 프로그램을 실행하는 방법은 무엇입니까?
- 23. 공유 오브젝트 및 포함하지 않고 C++에서 리눅스 아래에
- 24. 포함하지 않고 C++ 코드를 컴파일
- 25. Linux/C 프로그램을 사용자 정의 된 방식으로 실행하는 방법은 무엇입니까?
- 26. 관리자 암호를 묻지 않고 root로 응용 프로그램을 실행하는 방법은 무엇입니까?
- 27. C# 프로그램에서 박쥐 파일을 실행하는 방법은 무엇입니까?
- 28. MATLAB에서 C 실행 파일을 실행하는 방법은 무엇입니까?
- 29. GLSL 프로그램을 컴파일하고 실행하는 데 필요한 것은 무엇입니까?
- 30. Netbeans를 사용하여 프로그램을 단계별로 실행하는 방법은 무엇입니까?
어떤 컴파일러입니까? 너는 어떻게 꾸미고 있니? 때때로 make 파일은 * .c와 같은 것을 지정할 수 있습니다. –
포함하여 링크를 의미합니까? 그렇다면 필요한 모든 C 파일을 항상 링크해야합니다. include에 의해, 당신은'#include file.c'을 의미하고, 그렇지 않다면 다른 C 파일을 포함해서는 안됩니다. – wolfPack88