728x90
1. 문제 키워드
error: use of undeclared identifier 'getpid'; did you mean 'set_pid'?
or
'set_pid' declared here
(해석해보면: 선언부가 없어서 그러하다.)
2. 원인
아래의 코드에서 보면 main함수위에 선언부가 없음을 확인할 수 있다.
#include <stdio.h>
#include <cstring>
#include <stdlib.h>
#define PID_FILE "/test.pid"
int main() {
return 0;
}
int set_pid() {
FILE* fp = fopen (PID_FILE, "w" );
if (fp) {
fprintf (fp, "%d", getpid());
fclose (fp);
printf (" ===== Save PID %d =====", getpid());
}
else {
printf (" ===== can not open file %s",PID_FILE);
return 0;
}
return 1;
}
3. 조치
1번째는 main함수위에 int set_pid(); 추가하여, 함수의 선언부를 작성한다. (1번으로도 해결안될 경우는 2번 참조)
2번째는 set_pid함수안에 getpid로 인해 문제가 된다 getpid()함수는 아래의 헤더를 참고 하고 있기 때문이다. 추가 해줘야한다.
- error use of undeclared identifier 'getpid' 아래와 같은 해당코드 나올때는 밑에 헤더를 추가하자.
#include <sys/types.h> #include <unistd.h>
증상이 모두 해결된 코드
#include <stdio.h>
#include <cstring>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#define PID_FILE "/test.pid"
// Define the functions
int set_pid();
int main() {
return 0;
}
int set_pid() {
FILE* fp = fopen (PID_FILE, "w" );
if (fp) {
fprintf (fp, "%d", getpid());
fclose (fp);
printf (" ===== Save PID %d =====", getpid());
}
else {
printf (" ===== can not open file %s",PID_FILE);
return 0;
}
return 1;
}
고수님들 중에 해당 방법의 문제사항이 있으시면 아래의 댓글 부탁드립니다.
반응형
'Programming > C, C++' 카테고리의 다른 글
[C++, Error] (centos) cannot find -lstdc++ (0) | 2020.06.24 |
---|---|
[Linux, C/C++] undefined reference to '__gxx_personality_v0' 오류 조치 (0) | 2020.04.09 |
[C++, Error] unresolved overloaded function type (0) | 2019.07.22 |
[Linux,C++] getenv.c: undefined reference secure_getenv (0) | 2019.03.29 |
[C/C++] 소켓에서 컴파일 에러 (invalid conversion from int* to socklen_t*) (0) | 2019.02.26 |