저는이 간단한 프로그램을 가지고 있지만 단순한 오류를 없앨 수는 없습니다."function"에 대한 정의되지 않은 참조
나는이
#ifndef FUNCTIONLOOKUP_H_INCLUDED
#define FUNCTIONLOOKUP_H_INCLUDED
enum functions
{
foo,
bar
};
//predefined function list
int lookUpFunction(enum functions);
#endif // FUNCTIONLOOKUP_H_INCLUDED
와 헤더 파일이 내가 헤더 파일을 포함 어디에 내 주에서()를 lookUpFunction를 호출 할 때 SRC 파일에 내가 lookUpFunction 이제
의 정의가 그것은 그것에 대한 정의되지 않은 참조를 제공합니다. 다른 도움이 안되는 질문들.
#include <stdio.h>
#include <stdlib.h>
#include "FunctionLookUp.h"
int main()
{
lookUpFunction(foo); <---
return 0;
}
기능 구현
나는이 오류가 어디에서 오는지 알아낼 수 없습니다#include <stdio.h>
#include "FunctionLookUp.h"
typedef void (*FunctionCallback)(int);
FunctionCallback functionList[] = {&foo, &bar};
void foo(int i)
{
printf("foo: %d", i);
}
void bar(int i)
{
printf("bar: %d", i);
}
int lookUpFunction(enum functions)
{
int test = 2;
//check if function ID is valid
if(functions >= sizeof(functionList))
{
printf("Invalid function id"); // error handling
return 0;
}
//call function
functionList[functions](test);
return 1;
}
.
당신은 FunctionLookup.o''와 연결, 또는 컴파일러에'FunctionLookup.c'을 추가해야 문제 해결하기 위해
을 기도. –
스스로'false','true'를 정의하지 마십시오. Modern C는'stdbool.h '헤더에 그것들을 제공해야한다. 그리고 만약 당신이 진짜 이유가 없다면 (그러나 제발하지 말아주세요) C에서 자연스럽게 나오도록, 즉 '0'은 거짓이고 0이 아닌 값은 참이라는 것을 다른 방식으로 정의하십시오. 여기에'true == 0'과'false == 1'이 있습니다. –
Daniel Fischer : 저는이 프로그램을 12 개 만들었을 때 코드 블럭을 에디터로 사용하고 있습니다. 갑자기 변경해야 할 일이 무엇입니까 Jens Gustedt : 이미 삭제 된 것을 알고 있습니다.) – flexzican