c언어 코딩 중 도저히 이해가 안갑니다

ehddms10의 이미지

worker.c 파일

#include "worker.h"
#include "pmenu.h"
#include <ncurses.h>
#include <unistd.h>
void workerselect() {
    int stat = 0;
    int ch;
    keypad(stdscr, TRUE);
    noecho();
    while (1) {
        ch = getch();
        if (ch == 10) {
            if (stat == 0) {
                chdir("1p");
                ppselect();
                chdir("..");
            } else if (stat == 1) {
                chdir("2p");
                ppselect();
                chdir("..");
            } else if (stat == 2) {
                chdir("3p");
                ppselect();
                chdir("..");
            } else if (stat == 3) {
                chdir("driver");
 
            }
        }
        if (stat == 0) {
            if (ch == KEY_RIGHT) {
                pp2();
                stat = 1;
            } else if (ch == KEY_DOWN) {
                pp3();
                stat = 2;
            }
        } else if (stat == 1) {
            if (ch == KEY_LEFT) {
                pp1();
                stat = 0;
            } else if (ch == KEY_DOWN) {
                driver();
                stat = 3;
            }
        } else if (stat == 2) {
            if (ch == KEY_UP) {
                pp1();
                stat = 0;
            } else if (ch == KEY_RIGHT) {
                driver();
                stat = 3;
            }
        } else if (stat == 3) {
            if (ch == KEY_LEFT) {
                pp3();
                stat = 2;
            } else if (ch == KEY_UP) {
                pp2();
                stat = 1;
            }
        }
    }
}

위 함수에서 ppselect() 이 부분이 undefined reference "ppselect" 이게 떠요 include도 문제없이 해주었고 문제는 없어보이는데 아래에 ppselect도 보여드릴게요
pmenu.h
#ifndef __PMENU_H__
#define __PMENU_H__
void pinit();
void pmanage();
void pexit();
void ppselect();
#endif

pmenu.c 파일
#include"pmenu.h"
#include<ncurses.h>
void ppselect()
{
    int stat=0;
    int ch;
    keypad(stdscr, TRUE);
    pinit();
    noecho();
    while(1)
    {
        ch = getch();
        if(ch == 10)
        {
            if(stat == 0)
            {
                break;
            }
        }
        else if(stat == 0)
        {
            if(ch == KEY_RIGHT)
            {
                stat = 1;
                pmanage();
            }
        }
        else if(stat == 1)
        {
            if(ch == KEY_RIGHT)
            {
                stat = 2;
                pexit();
            }
            else if(ch == KEY_LEFT)
            {
                stat = 0;
                pinit();
            }
        }
        else if(stat == 2)
        {
            if(ch == KEY_LEFT)
            {
                stat = 1;
                pmanage();
            }
        }
    }
}

이렇게 단편적으로 보여드리는게 못할 짓인건 아는데 너무 답답해서 올립니다 죄송합니다 라이브러리는 ncurses를 비롯해서 시스템 호출 위주로 사용 중입니다. 나머지 사용자 지정 함수들은 다 회면 출력 코드들이라 넣어봤자 공간만 차지할까봐 넣지 않겠습니다 혹시 필요하시다면 수정하겠습니다
Makefile
main.out: main.o initmenu.o menu.o worker.o
	gcc -o main.out main.o initmenu.o menu.o worker.o -lncurses
 
main.o: initmenu.h menu.h worker.h main.c
	gcc -c main.c -lncurses
 
initmenu.o: initmenu.h initmenu.c
	gcc -c initmenu.c -lncurses
 
worker.o: worker.h pmenu.h worker.c
	gcc -c worker.c pmenu.c -lncurses
 
menu.o: menu.h worker.h menu.c
	gcc -c menu.c
 
clean:
	rm -f *.o
라스코니의 이미지

최소한 #include 부분하고 makefile 정도는 있어야 답변이 가능하지 않을까요

ehddms10의 이미지

추가하겠습니다 근데 이게 파일이 너무 많아서 참 죄송스럽네요 ㅠㅠ

라스코니의 이미지

pmenu.h 내용이 있어야 하죠!

ehddms10의 이미지

올렸습니다 그냥 이거 전체를 다 보여드리고 싶은데 ㅠㅠ 파일이 10개나 되서 ㅠㅠ

ehddms10의 이미지

혹시나 불편하시면 메일이라도 남겨주시면 파일 전부 보내드리겠습니다 죄송할 따름입니다

ehddms10의 이미지

아 makefile에 문제가 있었네요 main을 만들때 같이 링크를 해주었어야 했는데 불편한 질문에 관심 가져주셔서 정말 감사합니다 ㅠㅠㅠ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.