2012-10-24 4 views
0

vxTypes.h`_TYPE_fpos_t;는 무엇을 의미합니까?

#if !defined(__RTP__) 
#ifdef _TYPE_fpos_t 
#define _FPOS_T 
_TYPE_fpos_t; 
#undef _TYPE_fpos_t 
#endif 
#endif /* __RTP__ */ 

UPDATE 00 :

STDIO.H

typedef struct fpos_t 
    { /* file position */ 
    long _Off; /* can be system dependent */ 
    _Mbstatet _Wstate; 
    } fpos_t 

내가 가지고 fpos_t 유형의 컴파일 오류 (충돌)

error: conflicting declaration 'struct fpos_t'...'fpos_t' has a previous declaration as `typedef long int fpos_t' 

그래서 먼저 그것을 고칠 코드를 이해해야 누군가가 뭐라 설명 할 수 있습니다 코드가 수행합니까, 특히 _TYPE_fpos_t; 부분입니까?

+0

글쎄, 그건'_TYPE_fpos_t'가 무엇을 확장하는지에 달려 있습니다. 'gcc -E'로 검사해볼 수 있습니다. –

+0

@DanielFischer는 문제에 대해 더 잘 알 수있는 00 업데이트를 확인해 주시겠습니까? –

+0

'_TYPE_fpos_t'가'typedef long fpos_t'로 확장 될 수 있습니다. 그러나 그것을 확인하기 위해,'vxTypes.h' 또는 일부 헤더 (재귀 적으로)에 정의 된 내용을 찾으십시오. –

답변

1

나는 동일한 문제가있었습니다. gcc 도구 세트를 사용한다고 가정하면, "-nostdinc"컴파일러 옵션을 사용하여 GCC가 기본 검색 경로를 사용하지 못하도록합니다. diab 도구 모음에는 비슷한 옵션이 있어야합니다. 프로젝트 메이크 파일에는 컴파일러에서 시스템 헤더를 볼 수 있도록 "-I dir"항목이 이미 포함되어 있어야합니다.

0

는 매크로 _TYPE_fpos_t 정의되는 경우가

  • 매크로 _FPOS_T 정의;
  • 매크로 _TYPE_fpos_t을 호출하십시오.
  • 매크로 _TYPE_fpos_t의 정의를 취소하십시오.

어쨌든, 나머지 코드 (정의 : _TYPE_fpos_t 등)에 따라 다릅니다. __RTP__ 만약

0

정의되지 않고 _TYPE_fpos_t_FPOS_T을 정의 나중에 매크로 _TYPE_fpos_t 및 UNDEFINE _TYPE_fpos_t 전화, 정의된다.

+0

"_FPOS_T를 _TYPE_fpos_t로 정의"-> '\\'이 (가) 없습니다. – md5

+0

답장을 보내 주셔서 감사합니다. vxTypes.h의 4 번 줄을 설명해주십시오.'_TYPE_fpos_t;'? –

+0

@Kirilenko 당신 말이 맞습니다. "\"가없고 ";"로 끝납니다. –

0

It (_TYPE_fpos_t)는 원하는대로 사용할 구현을 위해 예약 된 이름입니다. 당신은 위험에 그것을 방해.

이 경우 유형의 typedef을 제어하는 ​​데 사용됩니다.이 헤더는 여러 헤더에 정의 될 수 있지만 헤더의 개수에 관계없이 한 번만 정의해야합니다 (C99 이하 규칙). 포함 된 순서 및 포함 된 순서. 여러 헤더에 정의 된 다른 유형 및 매크로와 유사한 메커니즘이있을 수 있습니다 (NULL, size_t 두 가지 주요 예가 될 수 있음).

시스템 헤더를보고 헤더를 작성하는 방법을 배우는 것은 어렵습니다. 시스템 헤더의 압력과 제약은 경이롭고 모든 종류의 왜곡을 초래합니다.