본문 바로가기
Programming/C, C++

[C, Error] error: use of undeclared identifier '함수'

by 근육곰돌이 2020. 4. 9.
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;
}

고수님들 중에 해당 방법의 문제사항이 있으시면 아래의 댓글 부탁드립니다.

반응형