함수에 대한 헤더 파일과 그 함수를 다른 파일로 구현하는 방법은 무엇입니까? 또한, 어떻게 다른 파일에 main을 가지고이 함수를 호출 할 수 있습니까? 이 기능은 재사용 할 수있는 독립적 인 구성 요소가 될 것입니다.함수 헤더와 다른 파일에서의 구현 C
답변
C/C++에서 비 인라인 함수는 한 번만 정의해야합니다. 함수 정의 을 헤더 파일에 넣으면 헤더 파일이 두 번 이상 포함될 때 "다중 정의"링크 오류가 발생합니다.
나는 헤더 파일에 func defn을 넣지 않을 것이다. 나는 선언과 구현을 포함하는 foo.h와 foo.c를 가질 것이다. 어떻게해야합니까? – Namratha
귀하의 질문에 대해 혼란 스럽습니다. 분명히 할 수 있습니까? – burningice
이 부분을 참조하십시오. 여기서 설명합니다. http://stackoverflow.com/questions/5575700/error-expected-asm-or-attribute-before-token-in-c/5575804#5575804 – Namratha
이것은 예제로 가장 잘 설명되어 있습니다.
정수의 큐브를 찾는 함수가 필요하다고합시다.
당신은
int cube(int x) {
return x * x * x;
}
cube.c
그런 다음 우리는 또 다른 파일의 기능 선언을 놓을 게요, 말하자면에서 정의 (구현) 할 것이다. 관습에 따라이 경우에는 header file, cube.h
입니다.
int cube(int x);
우리는 지금, driver.c
예를 들어, (C 프리 프로세서의 일부)를 #include
지시어를 사용하여 다른 곳에서 함수를 호출 할 수 있습니다.
#include "cube.h"
int main() {
int c = cube(10);
...
}
마지막으로 각 소스 파일을 개체 파일로 컴파일 한 다음 링크를 연결하여 실행 파일을 얻어야합니다.
한 사실 (특정 개체에 참조가 우승하지 않습니다 (예를 들어 라이브러리를 구현할 때) 당신이 더 나은 성능을 위해 헤더 파일의 모든 기능을 구현할 수있는 사실
$ gcc -c cube.c #this produces a file named 'cube.o'
$ gcc -c driver.c #idem for 'driver.o'
$ gcc -o driver driver.c cube.C#produces your executable, 'driver'
예를 들어, GCC 사용 컴파일하지 마라.) 그런 식으로조차도 별도의 인터페이스와 구현이 있습니다; 물론 "다중 정의"오류를 피하기 위해 헤더 파일에 gurads를 포함하게 될 것입니다.
- 1. Xcode4가 헤더와 구현 파일에 다른 테마를 사용하도록하십시오.
- 2. 헤더와 구현 파일을 동기화 상태로 유지
- 3. C++ DLL에 대한 콜백 C# 함수 구현
- 4. 글로벌 함수 헤더 및 구현
- 5. 함수 구현
- 6. C#의 헤더와 유사한 파일
- 7. JQuery Date.parse 함수 구현
- 8. 마지막 함수 구현
- 9. 하스켈지도 함수 구현 문제
- 10. Gower 거리 함수 구현
- 11. C# 클래스를 헤더와 .cs 파일로 분리
- 12. PHP, 헤더와 디스플레이 이미지()
- 13. Simulink에서 사용자 정의 MATLAB 함수 구현
- 14. 파일에서의 getline 후 파일의 시작 부분에
- 15. C++의 순수 가상 함수 구현 및 헤더 파일
- 16. C++에서의 라이선스 구현 보호
- 17. InfoPath 2010에서 문자열 함수 구현
- 18. OpenGL 고정 함수 셰이더 구현
- 19. Rebol의 공유 함수 (구현 상속)
- 20. JNI 함수 테이블 - Dalvik 소스 코드의 함수 구현
- 21. .mm 파일의 함수 내에서 C 함수 호출
- 22. C++ 자동 함수 반환 형식 구현 [후행 반환 형식]
- 23. C++ 구현
- 24. cakephp table 헤더와 너비
- 25. PHP 헤더와 shell_exec는
- 26. 리디렉션 : 헤더와 스크립트 - 어떻게 다른가요?
- 27. C#에서 "테이블"구현
- 28. 미리 컴파일 된 헤더와 OSX
- 29. C++ 템플릿 함수 인스턴스화
- 30. 다른 함수 내에서 VBA 함수 호출 문제
가능한 중복 [헤더 파일과 cpp 파일이있는 이유는 무엇입니까?] (http://stackoverflow.com/questions/333889/in-c-why-have-header-files-and-cpp-files) – GWW