Programing

C 또는 C++로 '타입형'을 하면 언제 '_t'를 추가해야 하는가?

c10106 2022. 5. 20. 21:19
반응형

C 또는 C++로 '타입형'을 하면 언제 '_t'를 추가해야 하는가?

후행은 언제 추가해야 하는지 헷갈린다._ttypedef'ed type?

예를 들어 다음과 같이 하십시오.

typedef struct image image_t;

또는 다음 중 하나를 선택하십시오.

typedef struct image image;

일반적인 규칙은 무엇인가?

또 다른 예:

typdef enum { ARRAY_CLOSED, ARRAY_OPEN, ARRAY_HALFOPEN } array_type_t;

또는 다음 중 하나를 선택하십시오.

typdef enum { ARRAY_CLOSED, ARRAY_OPEN, ARRAY_HALFOPEN } array_type;

제발 나를 이해시켜 주세요.

고마워, 보다 사이도.

POSIX에서 이름으로 끝나는 이름_t예약되어 있으므로 POSIX 시스템(예: Linux)을 대상으로 하는 경우 다음과 같이 유형을 종료하지 마십시오._t.

나는 개인적으로 그것을 경멸한다._t인습의그러나 당신이 일관성이 있는 한, 그것은 정말 문제가 되지 않는다.

POSIX와 같은 다른 표준에 따라 코딩하는 경우, 해당 표준에 문제가 없는지 확인한 후 해당 이름을 사용하십시오.

사용 시기_t한번도?주요 표준(POSIX)에 의해 예약되어 있으며, 지금은 아니더라도 언젠가는 당신의 코드가 POSIX 환경에서 사용될 수도 있기 때문에,_t나쁜 생각이야

나는 더 나아가 의 과잉 사용이라고 말하고 싶다.typedef대체로 나쁘다.당신의 타입이 a인 경우struct,union또는enum변수를 선언할 때 이 키워드를 사용하여 코드를 보다 명확하게 한다.의 사용typedef추상화/추상화 목적을 위해 보이지 않는 기본 유형을 만들고자 할 때 가장 적합하다.표준 C의 몇 가지 훌륭한 예는 다음과 같다.size_t,int32_t,mbstate_t, 그리고 stdio.FILE.

에 대한 최악의 남용들 중 몇 가지typedefWindows API를 통해(WORD,DWORD,INT,LPSTR등)과 입버릇(glib)gint,gchar, 등).동일한 용도의 표준 C 타입을 복제하는 것은 혼란스러울 뿐더러, 이러한 비표준 타입의 이름으로 모든 코드를 오염시킴으로써 개발자들을 당신의 라이브러리/플랫폼에 가두어 놓는 역할을 한다.

나는 가독성을 높이기 위해 접미사를 사용한다: _t는 t, _e는 25/30년 이후의 enums... 나는 때때로 typeef가 구조체를 정의할 때 _st를 사용한다.

나는 그것이 코드를 읽을 수 있고 표준화할 수 있도록 하는 좋은 연습이라고 생각한다. 그러면 나는 접미사를 사용할 권리를 찾는다!게다가, 지금까지 나는 접미사 _t가 예약되어 있다는 POSIX 공식 문서를 발견하지 못했다.

오래된 stdio.h는 _t를 함유하고 있다.참고 항목: grep -i "_t;" stdio.h :) POSIX 표준은 C보다 "조금" 어리다고 생각한다!

변수, 함수 등을 사용하여 원하는 대로 유형별로 좋은 이름을 선택하십시오.좋은 이름에는 코드를 읽기 어렵게 만드는 중복 정보가 포함되어 있지 않다. _좋은 이름부터 가지고 있다면 결코 도움이 되지 않는다.

그런데, typedef image image;이건 그냥 이미지를 스스로 타이핑하게 만들 뿐이니까 말이 안 돼

나는 사용하고 있다_t변수와 구별하기 위한 열거형 및 원시 유형의 접미사.네임스페이스에 넣었기 때문에 신경 쓰지 않는다._t예약

그것을 정당화하기 위해서.매우 자주 변수 이름은 타이핑된 유형에 대한 암시다.맘에 들다std::size_t size;array_t array에 기지가 되어 있을 때 적절한 쉽다는 유형에 포함된 경우 변수의 적절한 이름을 선택하는 것이 더 쉽다는 것을 알았다._t접미사를 붙이다그것은 또한 그것이 유형화된 원시적인 것이며, 예를 들어 클래스 같은 다른 짐승이 아니라는 것을 상기시킨다.

참조URL: https://stackoverflow.com/questions/3225386/if-i-do-a-typedef-in-c-or-c-when-should-i-add-t-at-the-end-of-typedefed

반응형