728x90

2026/01 3

Main 보다 먼저 호출되는 코드가 있다?!

C언어의 시작은 main()이 국룰? 아니다. 이 속성을 쓰면 main() 진입 전에 코드가 실행된다. Constructor Attributegcc, clang 컴파일러가 제공하는 확장 속성 __attribute__((constructor)) 가 명시된 함수들을 main() 진입 직전에 자동으로 실행__attribute__((constructor)) void pre_main() { // Main보다 먼저 실행됨} 여러 파일에 여러 개 정의되어 있어도 모두 main() 진입 직전 실행 됨 왜 쓰나?모듈(Module)과 라이브러리가 "자율적 초기화(Self-Initialization)" 를 수행 할 수 있음main 함수가 모든 모듈의 초기화 코드를 알 필요가 없게 만들어, 의존성(Dependency..

TIL/2026 2026.01.21

muldiv64 는 무엇인가?

muldiv64 함수는 오버플로(Overflow)의 공포 없이 큰 수를 다루는 정밀 연산 함수입니다. 어떤 동작을 하나?A x B / C 연산을 하죠A, B, C 모두 64bit 정수일 때 중간 값 오버플로우(A x B 과정) 없이 정확한 결과를 반환해요 Real worldCase 1: 리눅스 커널 시간 변환 (Timekeeping)CPU 사이클(Ticks) → 나노초(ns)Nanoseconds = Cycles x NSEC_PER_SEC / Frequency Cycles가 조금만 커져도 10^(9)를 곱하는 순간 overflow 발생muldiv64를 쓰면 overflow 없이 연산 가능 Case 2: 동영상 싱크 맞추기 (FFmpeg/Gstreamer)비디오 타임스탬프 (PTS) 변환PTS (new)..

TIL/2026 2026.01.21

VectorCAST : clicast vs DATA API (manage)

vectorCAST를 CLI로 수행 가능한가?CI/CD 자동화를 위해 vectorCAST를 CLI 명령으로 사용해야하는 상황이 있어요.CLI 명령으로 빌드, 실행, 리포트 추출 등 다양한 동작을 할 수 있죠. vectorCAST의 CLI 명령은 2가지 종류가 있어요clicastmanage (Data API) clicast vs DATA API (manage)왜 헷갈리게 CLI 명령이 두 종류 일까요?clicast가 최초의 vectorCAST cli 명령이에요.CI/CD 자동화에 clicast를 사용하면 되죠. 그럼 DATA API인 manage 명령은 뭐죠?manage라는 명령어는 clicast 이후에 나왔고 좀 더 API 스럽게 추상화 된 인터페이스를 가져요.내가 원하는 정보만 딱 추출하여 가공하는데 ..

TIL/2026 2026.01.07
728x90