에서 변수를 수출하는 것은, 내가 MAIN.CPP에서 사용하고자하는 즉시 사용 가능한 변수 (mtab 파일) :C/C++ : C/C++에서는 .H
- 선언 및 초기화
- 는 lib.cpp에서 구현 lib.h
: 무슨 일이야? typedef가 무시 된 것 같아요. 왜 그런지 모르겠습니다.
참고 : mtab 파일은 lib.h의 각 사용자에 대해 동일해야합니다으로
- , 나는
- 는 정적 변수는 항상 초기화해야 static 키워드를 추가 (예기치 않은 동작을 피하기 위해), I는 초기화 내가 lib.cpp에서 mtab 파일 선언과 초기화를 이동할 때 컴파일 KO
- 이며, MAIN.CPP에서 "통근"사용 : mtab 파일은 lib.h
- 에 나는 lib.cpp에 mtab 파일 초기화를 이동할 때 컴파일 KO입니다.
- 컴파일을 정상적으로 수행하는 유일한 방법은 mTab 선언 및 초기화를 main.cpp의 기본 범위 내에 두는 것입니다 ... 원하는 것은 아닙니다! (주 범위 편집 내부 OK입니다. 주요 범위 밖, 즉 수준을 포함에, 컴파일 KO입니다) 도움을
감사합니다,
FH
~>more *
lib.cpp
#include "lib.h"
void m1 (unsigned int const iDataSize, int * const iopData) { return; }
void m2 (unsigned int const iDataSize, int * const iopData) { return; }
lib.h
#ifndef __lib__
#define __lib__
void m1 (unsigned int const iDataSize, int * const iopData);
void m2 (unsigned int const iDataSize, int * const iopData);
typedef void (*pF) (unsigned int const iDataSize, int * const iopData);
static pF mTab[2]; // Ready-to-use variable to be exported
mTab[0] = &m1;
mTab[1] = &m2;
#endif
MAIN.CPP
#include "lib.h"
#include <stddef.h> // NULL
int main()
{
(*mTab[0]) (0, NULL);
(*mTab[1]) (0, NULL);
return 0;
}
메이크
all:
gcc -I. -c lib.cpp -o lib.o
gcc -I. -c main.cpp -o main.o
gcc -I. lib.o main.o -o main.exe
콘솔 :
~>make
gcc -I. -c lib.cpp -o lib.o
In file included from lib.cpp:1:0:
lib.h:7:1: error: ‘mTab’ does not name a type
lib.h:8:1: error: ‘mTab’ does not name a type
make: *** [all] Error 1
스택 오버플로가 개인 교습을위한 장소가 아니므로 아래 표를 얻고 있습니다. 당신은 정상적인 학습을 위해 다른 출처를 사용해야합니다. Stack Overflow는 이미 주제를 많이 습득 한 사람들을 모으는 질문과 문제에 더 잘 사용됩니다. –