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