typedef struct
{
char vertex;
struct Node* next;
} Node;
Node* adjList[MAX_VERTEX];
int checkEdge(char from, char to)
{
Node* search = adjList[from - 65];
while (search)
{
if (search->vertex == to)
return TRUE;
search = search->next;
}
return FALSE;
}
C파일에서는 에러없이 잘 돌아가지만
CPP파일에서는 밑에 설명과 같은 에러가 발생합니다.
search = search->next; 에서 Node* 형식의 값을 Node* 엔터티에 할당 할 수 없습니다.
라는 에러 메시지가 뜹니다.
typedef struct _Node* nodeptr;
typedef struct _Node
{
char vertex;
nodeptr next;
} Node;
그래서 이렇게 고쳤더니 해결됐는데
typedef struct
{
char vertex;
struct Node* next;
} Node;
typedef struct _Node* nodeptr;
typedef struct _Node
{
char vertex;
nodeptr next;
} Node;
이 두개가 차이가 있는건가요??
ㅇㅇ
c 에서는 무조건 구조체 명시 해줘야됨
tag와 사용자 정의 타입은 개념이 달라
심지어 무명태그네? 컴파일러따라 오류낸다 치워라
네 무명태그는 그렇다쳐도 저 구조체 자기참조 포인터가 문제인데
자기참조 포인터도 위에처럼 쓰면 안되나요??
struct Node != Node
아니다 그냥 뭔가 무명태그부터 이상해
덕분에 의문이 풀렸습니다 답변 감사합니다
cpp에서는 태그명을 입력하면 자동으로 typedef까지 해준다고 생각하면 됨 그러니까 cpp에 있어여할 건 struct TAGNAME(이자 typename이 될 것) { 정의 }; 인데 TAGNAME 없으니까 CPP에서 에러난 거
아하 명확한 답변 감사합니다.
아니다 그것 때문에 에러난거 아닌거 같음
typedef는 어쨎든 있으니 에러 안나야할 것 같은데 그 뒤 로직때문일 것 같다
해보고 알려줌
방금 테스트해봤는데
typedef struct _Node { char vertex; struct _Node* next; } Node;
이렇게 하니 해결됐어여 태그문제 맞는거같아요
일단 태그 붙여야 잡다한 문제 안생겨서 무조건 붙이는게 좋기는 한데 지금 당장이 상황은 단순히 태그 문제는 아닌 것 같음 새로 글 썼으니 봐바
그냥 무명 태그부터 컴파일러 오류 및 비정상 행동 내재되어있음. 즉, 컴파일 해 준 C가 병신이지 C++은 병신이 아니다 그말씀
네네 그러네여 테스트결과도 답변주신대로에요