함수 본문 또는 변수 누락
업데이트: 2007년 11월
Missing Function Body or Variable
함수 프로토타입을 사용하면 컴파일러가 오류 발생 없이 작업을 계속할 수 있지만, 예약된 변수 공간이나 함수 코드가 없으므로 링커가 주소에 대한 호출을 확인할 수 없습니다. 링커가 반드시 확인해야 하는 함수에 대한 호출을 만들면 이 오류가 발생합니다.
예제
main에서 함수를 호출하면 컴파일러는 프로토타입에 따라 함수가 있는 것으로 간주하므로 LNK2019가 발생합니다. 링커는 함수를 찾지 못합니다.
// LNK2019_MFBV.cpp
// LNK2019 expected
void DoSomething(void);
int main() {
DoSomething();
}
C++에서는 클래스에 대해 특정 함수를 구현해야 하며 클래스 정의에 프로토타입을 포함하지 말아야 합니다. 헤더 파일 외부에서 클래스를 정의하는 경우에는 클래스 이름이 함수 앞에 와야 합니다(Classname::memberfunction).
// LNK2019_MFBV_2.cpp
// LNK2019 expected
struct A {
static void Test();
};
// Should be void A::Test() {}
void Test() {}
int main() {
A AObject;
AObject.Test();
}