본문 바로가기

프로그래밍

[C언어] simple hash table - test code
[C언어] c/c++ gcc 디버깅을 위한 gdb 초간단 사용팁 1. gdb 사용을 위한 core 덤프 파일을 위한 준비작업 1.1 디버깅 정보를 포함하기 위해 gcc 컴파일 옵션의 CFLAGS 에 -g 옵션을 추가한다. ex) CFLAGS += -Werror -Wlong-long -Wno-pointer-sign –g 1.2 core 파일의 크기를 설정한다. 보통은 무한대로 설정하면 편하다. ulimit –c unlimited # ulimit -a 로 확인 1.3 core 덤프파일의 확장자로 pid 값을 달게 하기 위한 추가 작업 (option) sysctl -w kernel.core_uses_pid=1 # sysctl -a 로 확인 [주의] 2, 3의 항복은 쉘의 세션마다 적용이 된다. 부팅과정의 세션과 prompt가 뜨고 root 로 로그인 후의 세션은 다르다. ..
[C언어] uint2bin char *uint2bin(unsigned int i) { static char s[32 + 1] = { '0', }; int count = 32; do { s[--count] = '0' + (char) (i & 1); i = i >> 1; } while (count); return s; }
[C언어] IP 관련 매크로(Macro) Header => #include #define IPV4_INT_TO_STR(int_ipv4_ptr) inet_ntoa(*((struct in_addr *)int_ipv4_ptr)) #define IPV4_STR_TO_INT(str_ipv4_ptr) (unsigned int) inet_addr(str_ipv4_ptr) [참고] 헤더 include가 빠지면 error: dereferencing pointer to incomplete type 에러가 납니다. 계속 추가...
[C언어] BIT READ/WRITE MACRO #define READ_U8(_val, _ptr) { \ _val = *((unsigned char *) (_ptr)); \ } #define READ_S8(_val, _ptr) { \ _val = *((char *) (_ptr)); \ } #define READ_U16(_val, _ptr) { \ _val = *((unsigned short *) (_ptr)); \ } #define READ_S16(_val, _ptr) { \ _val = *((short *) (_ptr)); \ } #define READ_U24(_val, _ptr) { \ _val = *((unsigned int *) (_ptr)) >> 8; \ } #define READ_S24(_val, _ptr) { \ _val = *((int ..
[C언어] structure file dump and reading T_MMDB_EXT_VLAN_TAG_OPER_PROFILE = *MMDB_EXT_VLAN_TAG_OPER_PROFILE[MAX_MMDB_EXT_TAG_RULE]; // DUMPING #ifdef SUPPORT_GPON_EXT_VLAN_OPER sprintf(buf, "rm -rf %s", MMDB_EXT_VLAN_PROFILE_CONFIG_FILE); system(buf); fp = fopen(MMDB_EXT_VLAN_PROFILE_CONFIG_FILE, "wb"); if ( NULL != fp ) { for (ii=0; ii
[Font] 콘솔, 프로그래밍용 폰트 프로그래머들이 선호한다는 폰트입니다. 이탤릭채가 예쁘네요.