C의 외부 .c 파일에서 함수를 호출하는 방법
내 파일은
// main.c
#include "add.c"
int main(void) {
int result = add(5,6);
printf("%d\n", result);
}
그리고.
// add.c
int add(int a, int b) {
return a + b;
}
큰따옴표 사용#include "ClasseAusiliaria.c"[앵글 브라켓 사용 안 함]< >) ]
그리고 같은 디렉토리/폴더에 확장자로 파일을 저장하는 것을 선호합니다.
TLDR: 교환#include <ClasseAusiliaria.c>와 함께#include "ClasseAusiliaria.c"
변경하다Main.c그렇게
#include <stdlib.h>
#include <stdio.h>
#include "ClasseAusiliaria.h"
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d\n",risultato);
}
만들다ClasseAusiliaria.h그렇게
extern int addizione(int a, int b);
그리고 나서 당신의 코드를 컴파일하고 실행했는데
11
일렬로 서다classAusiliaria.h메서드 시그니처를 입력합니다.
이제 .c 파일을 포함하는 대신 이 .h 파일을 포함합니다.
여기에는 많은 훌륭한 공헌이 있지만, 내 공헌을 덧붙이겠습니다.
첫 번째로 알게 된 것은 메인 파일에서 add()라는 함수를 만들겠다는 약속을 하지 않았다는 것입니다.이 카운트는 메인 파일에서 다음과 같이 처리됩니다.
int add(int a, int b);
메인 함수보다 먼저, 그러면 메인 함수가 add 함수를 인식하고 실행 가능한 코드를 찾을 수 있습니다.따라서 기본적으로 파일은
메인.c
int add(int a, int b);
int main(void) {
int result = add(5,6);
printf("%d\n", result);
}
및 // add.c
int add(int a, int b) {
return a + b;
}
신고해야 합니다.int add(int a, int b);(세미콜론 참조)를 헤더 파일에 삽입하여 두 파일에 모두 포함합니다.Main.c에 포함시키면 함수를 호출하는 방법을 컴파일러에 알 수 있습니다.두 번째 파일에 포함시키면 선언이 유효한지 확인할 수 있습니다(선언과 구현이 일치하지 않으면 컴파일러가 불만을 제기합니다).
그런 다음 두 *.c 파일을 하나의 프로젝트로 컴파일해야 합니다.자세한 내용은 컴파일러에 따라 달라집니다.
.c 파일은 논리적으로 문제없이 포함할 수 있지만, 표준에 따라 함수의 구현을 숨기고 바이너리를 제공하기 위해 헤더 및 소스 파일 기술을 사용합니다.여기에서는 헤더가 함수 시그니처를 정의하기 위해 사용되며 소스 파일에는 구현이 있습니다.프로젝트를 외부에 판매할 때는 헤더와 바이너리(libs 및 dlls)만 출하하면 기능 구현의 배후에 있는 주요 논리를 숨길 수 있습니다.
여기서 문제는 << 고객명>님이 아닌 << 고객명>>님을 사용해야 한다는 것입니다.이것은, 인크루먼트가 발생하는 파일과 같은 디렉토리내에 있는 파일을 포함하고 있기 때문입니다.이것은 .c 파일과 .h 파일 모두에 공통입니다.
write main.c like this -
caution : while linking both main.0 and ClasseAusiliaria.o should be
available to linker.
#include <stdlib.h>
#include <stdio.h>
extern int addizione(int a, int b)
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d\n",risultato);
}
다른 c파일에 c파일을 포함시키면 안 됩니다.대신 호출할 함수가 선언된 헤더파일을 만듭니다.예를 들어 ClasseAusioria 파일입니다.h:
int addizione(int a, int b); // this tells the compiler that there is a function defined and the linker will sort the right adress to call out.
당신의 Main.c 파일에서 그때:새로 만든 헤더 파일 포함할 수 있다.
#include <stdlib.h>
#include <stdio.h>
#include <ClasseAusiliaria.h>
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d\n",risultato);
}
언급URL:https://stackoverflow.com/questions/21260735/how-to-invoke-function-from-external-c-file-in-c
'source' 카테고리의 다른 글
| Vuejs. 하위 구성 요소의 프로펠을 변환해도 경고가 트리거되지 않습니다.왜 그럴까 (0) | 2022.08.08 |
|---|---|
| Ubuntu에 Java 7 설치 (0) | 2022.08.08 |
| 지정한 하위 항목에 이미 상위 항목이 있습니다.먼저 자녀의 부모(Android)에서 removeView()를 호출해야 합니다. (0) | 2022.08.08 |
| VueJ 컴포넌트 간에 공통 CSS 공유 (0) | 2022.08.08 |
| 구성 요소에서 이벤트를 수신하는 vuej (0) | 2022.08.08 |