내가 가진 문제는 C 헤더 파일의 순환 종속성 문제입니다. 해결책은 앞으로의 정의와 관련이 있다고 생각하지만 많은 유사한 문제가 있지만typedef 구조체, 순환 종속성, 전달 정의
// fwd1.h
#ifndef __FWD1_H
#define __FWD1_H
#include "fwd2.h"
typedef
struct Fwd1 {
Fwd2 *f;
}
Fwd1;
void fwd1 (Fwd1 *f1, Fwd2 *f2) ;
#endif // __FWD1_H
: 상장, 아무도 내가이 일을 해결하는 데 필요한 정보 ... 나는 다음과 같은 5 소스 파일이
을 제공하기 위해 보이지 않는다.
// fwd1.c
#include "fwd1.h"
#include "fwd2.h"
void fwd1 (Fwd1 *f1, Fwd2 *f2) { return; }
.
// fwd2.h
#ifndef __FWD2_H
#define __FWD2_H
#include "fwd1.h"
typedef
struct Fwd2 {
Fwd1 *f;
}
Fwd2;
void fwd2 (Fwd1 *f1, Fwd2 *f2) ;
#endif // __FWD2_H
.
// fwd2.c
#include "fwd1.h"
#include "fwd2.h"
void fwd2 (Fwd1 *f1, Fwd2 *f2) { return; }
. 내가 명령으로 컴파일하고
// fwdMain.c
#include "fwd1.h"
#include "fwd2.h"
int main (int argc, char** argv, char** env)
{
Fwd1 *f1 = (Fwd1*)0;
Fwd2 *f2 = (Fwd2*)0;
fwd1(f1, f2);
fwd2(f1, f2);
return 0;
}
: 나는 컴파일 에러를 해결하기 위해 여러 가지 아이디어를 시도,하지만 ... 다른 오류가있는 오류를 대체하기 위해 관리해야
gcc fwdMain.c fwd1.c fwd2.c -o fwd -Wall
는 어떻게 해결합니까 내 코드가 최소한으로 변경되면서 순환 종속성 문제가 발생합니까? ... 이상적으로, 코딩 스타일의 문제로서, 나는 "struct"라는 단어를 제 코드 전체에 두는 것을 피하고 싶습니다.
순환 의존성은 종종 나쁜 생각입니다. Fwd1과 Fwd2를 하나의 구조로 병합 할 수 있습니까? like 'struct Fw {Fw * f1; Fw ** f2;} '? 또 다른 것은 'main()'에서 'f1'과 'f2'를 초기화하지 않았습니다. – Thanushan
@BlueChip 답변으로 불편을 드러내시기 바랍니다. 그런 다음 불편한 점이있는 다른 사람들이 그것이 해결책이라는 것을 알 수 있도록 올바른 것으로 표시하십시오. – cgledezma
@ Thanushan Balakrishnan : 상상할 수 있듯이 _actual_ 문제는이 단순화 된 예제보다 상당히 복잡합니다. 슬프게도 요소를 결합하는 것은 (합리적인) 옵션이 아닙니다 ... @ cgledezma - 전자 메일 옵션을 잘못 설정 한 것 같습니다. – BlueChip