반응형

학습자료(~2017)/C,C++ 22

시간 (time) 함수에 대한 고찰 mktime , strptime, time zone , UTC , KST

시간 함수를 사용하면서 가장 힘들었던 점은 UTC , GMT 와 timezone 에 따른 시간의 편차이다.1970년 01월 01일 00시 00분 00초 를 기점으로 흐르는 시간을 epoch time 이라고 한다.바꾸어 말하면 0 epoch time 은 1970년 01월 01일 00시 00분 00초 이다. strptime 함수는 날짜와 시간으로 이루어진 문자열을 struct tm 이라는 구조체로 바꾼다. struct tm{ int tm_sec;/* Seconds.[0-60] (1 leap second) */ int tm_min;/* Minutes.[0-59] */ int tm_hour;/* Hours.[0-23] */ int tm_mday;/* Day.[1-31] */ int tm_mon;/* Month...

[C,C++] printf 사용시 포맷(fotmat) 지정에 관해 -(플래폼에 종속적이지 않은 printf)

printf 함수를 사용하다보면 난감한 상황에 봉착한다.int64_t 의 경우 장비에 따라서 long long int, long int 등 기본형을 다르게 가진다.또는 void * 즉 포인터형이 32비트 장비에서는 32비트 크기이고 , 64비트 장비에서는 64비트이다.이런 경우 printf 의 포맷을 무엇으로 지정해야되는 고민스러울 때가 있다. 매크로 조건식으로 분기를 타게해야되나 sizeof 함수로 분기를 타게 해야되나. 고민스러울때가 많다.이때 #include 를 활용해보자 만약 int64_t 를 정수로 출력해야된다면printf("%" PRId64 , val)만약 int64_t 를 16진수로 출력해야된다면printf("%" PRIx64 , val)만약 void * 즉 포인터(주소) 값을 정수 출력해야..

[MYSQL] 간단 사용법 예제코드

참고 : http://zetcode.com/tutorials/mysqlcapitutorial/ 영어 예제 http://koronaii.tistory.com/194 한글 예제 http://dev.mysql.com/doc/refman/5.6/en/c.html 공식 사이트 영어 API 메뉴얼 mysql client library 설치 (centos 6.2 64bit) yum install mysql-libs yum install mysql-devel GCC 옵션 (centos 6.2 64bit) gcc -lmysqlclient -L/usr/lib64/mysql -I/usr/include/mysql MYSQL 연결 (에러처리 따윈 없다.) 순서 : 1.mysql_init() 2.mysql_real_connect..

[GCC]gcc 컴파일 옵션

출처 : http://alisa2304.tistory.com/1051. 링크 옵션 옵션설명  -lname 링크할 때 name인 lib를 찾음 -nodefaultlibs 링크할 때 표준 시스템 lib를 사용하지 않음 -nostartfiles 링크할 때 표준 시스템 startup 파일을 사용하지 않음 -nostdlib 링크할 때 표준 시스템 startup과 lib를 사용하지 않는다 -s 완성된 바이너리에서 모든 심볼 테이블과 재배치 정보를 제거 -shared 공유 오브젝트를 생성(다른 오브젝트와 링크하여 실행 파일을 생성할 수 있음) -shared-libgcc libgcc의 공유 라이브러리 버전을 강제로 지정해서 사용 -static 정적 라이브러리를 이용하여 링크 -static-libgcc libgcc의 정..

[C] #if 0 ,#if 1 의 사용의도

주석을 처리할때 /* */ 를 쓰는 경우가 있다. /* */ 를 쓸때 주석 처리가 중첩되면 내가 의도했던 주석과는 다르게 처리된다. /* ..... /* ..... ...... */ ...... */ 또한 주석을 하고 주석을 지우고를 반복해야할때 주석의 시작과 끝을 까먹을 때가 있다. 그래서 #if 0 과 #if 1 로 주석을 처리하는 것이다. #if 0 는 0이 거짓이므로 전처리기는 #if~#endif 까지를 없앨것이고 #if 1 는 1이 참이므로 전처리기는 #if~#endif 까지 남겨둘 것이다. 주석을 하고 지우는 과정이 0을 1로 1을 0으로 바꾸면 소스 블록도 명확하므로 많이 쓰이는것 같다.

[C] 디버그용 매크로 - 매크로 가변인자사용

디버그용으로 printf 를 쓸때가 매우 많다. 디버그 목적으로 무분별하게 printf 를 추가했지만 릴리즈하기전 printf를 지우는 일은 많은 노동력이 든다. 이 노동을 매크로를 이용해서 릴리즈할때는 디버그 목적으로 추가된 printf를 없애는 방법이다. #if defined DEBUG #define TRACE(fmt,...) printf(fmt,__VA_ARGS__)#define TRACE(fmt,...) printf(fmt,##__VA_ARGS__) #else #define TRACE(fmt,...) #endif 키포인트: #define TRACE(fmt,...) printf(fmt,__VA_ARGS__) 이렇게만 쓸경우 TRACE("test") 와 같이 인자가 하나일때는 오류가 난다. #defi..

[C 언어] mysql c언어 api라이브러리 사용법 - 펌

출처 : http://koronaii.tistory.com/194 MySQL C API 1) my_ulonglong mysql_affected_rows(MYSQL* mysql) INSERT, UPDATE, DELETE 등의 query로 영향을 받은 ROW의 수를 리턴한다. 2) void mysql_close(MYSQL* mysql) 서버와의 연결을 종료한다. 3) void mysql_data_seek(MYSQL_RES* result, unsigned int offset) result에서 임의의 ROW에 접근을 하도록 하는 함수이다. offset이 row의 번호를 나타낸다. 0이면 처음 ROW, mysql_num_rows( result ) - 1 은 마지막 row를 나타낸다. 4) unsigned int ..

반응형