6.0에서는 잘되던것이 2008에서는 왜안될까요?

ROKorean의 이미지

PTR_Node idListR(PTR_Node head){

printf("Start\n");
if(head == NULL){ //head노드리스트의 마지막 도달시
    printf("NULL\n");
    return NULL; //NULL리턴.
}

if(head->tag == Nid){ //id인경우.
    PTR_Node node;
    printf("identifier\n");
    node = (PTR_Node)malloc(sizeof(PTR_Node)); //노드할당(여기에서 안넘어갑니다.!!)

    node->item = head->item;
    node->tag = head->tag;
    head = head->next; //헤드 다음으로 이동.

    node->next = idListR(head); //재귀호출.
    return node;
}
else{// 인티져, 괄호 인경우.
    printf("else");
    return idListR(head->next);
}

}

텍스트파일에 저장되어있는 값들을 읽어서 노드로 구성을하여 그노드의 헤드를 이 함수에서 매개변수 head로 받습니다. Identifier인지 Number인지 구분하고 Identifier로만 이루어진 링크드리스트를 만들어서 첫번째 노드를 리턴해주는 함수랍니다.

왜이럴까요;ㅠ

winner의 이미지

저는 Windows Programming의 pointer typedef을 싫어합니다.
특히 PTSTR와 PTCHAR 이 같은 것도 희한하고, 과거의 유산으로 문서나 기존 source들이
다 LPTSTR 드립이더군요.

Node의 크기가 얼마인지는 모르겠습니다만 6.0에서도 우연히 동작하고 있었을 가능성이 높군요.

kbenjamin의 이미지

안넘어 간다는게 무슨 뜻인가요?

라스코니의 이미지

포인터로 보이는데 malloc(sizeof(Pointer)) 하면 단 4 byt만 잡힙니다.
보면 linked list 를 이용한 프로그램 같은데 구조체의 사이즈를 구하실려면 sizeof(구조체) 이런 식으로 적어 주세요.