source

C의 외부 .c 파일에서 함수를 호출하는 방법

goodcode 2022. 8. 8. 20:03
반응형

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

반응형