해시 테이블을 사용하여 딕셔너리를 만들려고하므로 node
a word
및 next
포인터가 연결된 라는 구조를 만들었 습니다.
// Represents a node in a hash table
typedef struct node
{
char word[LENGTH + 1];
struct node *next;
}
node;
// Hash table
struct node *table[5];
에서를 main
초기화했으며 node
이제 해시 테이블에로드하려고합니다.
void hash_insert_node(struct node **hash_table, struct node *n, int value)
{
hash_table[value] = n;
printf("%s\n", hash_table[value]->word);
}
이 함수의 프로토 타입은라는 파일에 있고이 dictionaries.h
코드는 dictionaries.c
. 의 상단 dictionaries.c
에는
#include "dictionaries.h"
지금 코드를 실행하면 다음 오류가 발생합니다.
declaration of 'struct node' will not be visible outside of this function [-Werror,-Wvisibility]
이 문제를 해결하기 위해 찾은 유일한 방법은 구조의 정의를로 옮기는 dictionaries.h
것이지만 어리석은 것 같습니다.
이것은 사소한 질문 일 수 있지만 도움을 주시면 대단히 감사하겠습니다.
이 문제를 해결하기 위해 찾은 유일한 방법은 구조의 정의를 dictionaries.h로 옮기는 것이지만 어리석은 것 같습니다.
나에게는 어리석은 것처럼 보이지 않으며 .h
파일은 struct
선언 을하기에 완벽한 장소 인 것 같습니다 .
함수가 .NET Framework의 존재를 인식하지 못하기 때문에 문제가 발생합니다 struct
.
몇 가지 다른 방법으로이 문제를 해결할 수 있습니다.
struct
함수의 선언 앞에 예 : struct node;
char *GetHashWord(struct node **hash_table, int value);
struct
별도의 .h
당신이 예를 들어, 이름을 수있는 파일 data_structure.h
과 #include
에 dictionaries.h
.참고로 구조체에 별칭을 부여하려는 경우 사용할 수도 있습니다.
void hash_insert_node(node **hash_table, node *n, int value){/*...*/}
^^^^ ^^^^
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다