[C, C++] size_t, time_t 등에서 _t의 뜻

clock_t

C언어에는 시간을 측정하는 clock함수가 있다. 그리고 이 함수는 리턴값으로 clock_t의 자료형을 받는다. clock_t 뿐 아니라 size_t, time_t 등 _t가 쓰여진 자료형들을 어렵지 않게 만날 수 있다.

#include <stdio.h>
#include <time.h>

int main(){
    clock_t begin, end;

    begin = clock();
    for(int i=0;i<1000000000;i++) ; // 측정을 원하는 구간
    end = clock();

    printf("ms : %lf\n", (double)(end-begin));
    printf("s : %lf\n", (double)(end-begin)/CLOCKS_PER_SEC);
    return 0;
}

_t

t는 type의 약자로, typedef로 정의된것을 의미한다. C언어의 stdint.h 파일을 보면 이를 확인할 수 있다.

_t는 typedef로 이름을 새롭게 정의한 것일 뿐 컴파일러를 위한 표현이 아닌 사람의 가독성을 위한 표현이다. 따라서 우리도 변수명을 정의할 때 _t를 붙일 수 있다.

typedef struct{
    int id;
    int password;
} account_t;

그러나 POSIX에서는 문제가 될 소지가 있다. POSIX에는 _t로 구현된 예약어(시스템 변수)가 있어서 우연히 우리가 지은 변수명과 중복되어 어떤 예상치 못한 문제를 일으킬 수 있다.

참고

https://stackoverflow.com/questions/231760/what-does-a-type-followed-by-t-underscore-t-represent

Leave a Comment