프로그래밍 언어20 가변인자 함수 + 디버깅 매크로 가변인자란?가변인자란 인자의 개수가 변하는 인자디버깅 사용방법가변 인자와 내장 디버깅 매크로를 지원하지 않을 때1. gcc 컴파일러 환경에서 디버깅용 매크로 선언printf 함수처럼 매크로도 가변 개수의 인수를 취하도록 만들 수 있다. 이를 가변 매크로(variable macro)라고 한다. gcc에서 확장으로 제공하는 문법이므로 당연히 다른 컴파일러에서는 쓸 수 없습니다.C99의 표준 문법은 #define TRACE(fmt, args...) printf("(%s[%d] : " fmt, __FUNCTION__, __LINE___, ##args); 2. gcc 이외 컴파일러 환경에서 디버깅용 매크로 선언#define TRACE(fmt, ...) printf(fmt, ##__VA_ARGS__) 가변 인.. 2024. 8. 16. 메모리 맵 파일 - 파일을 메모리에 매핑(중요) 임베디드 리눅스 시스템에서 볼수 있는 세가지 형태의 주소가 있다. 1. 물리 주소 : 실제 메모리 버스상에서 사용되는 주소 2. 가상 주소 : 프로세스가 메모리에 접근할 때 사용하는 주소커널에서 주로 사용 3. 버스 주소 : CPU 외의 장치들에서 사용되는 메모리 주소 메모리 맵 파일 :메모리 맵 파일을 통해 프로세스의 가상메모리 주소 공간에 파일을 매핑한 뒤 가상 메모리 주소에 직접 접근하는 것으로 파일 읽기/쓰기를 대신한다.1. MMAP : 파일 내용을 메모리에 매핑 void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset) parameter - addr : mapping 될 address매핑하려는 주소를 직.. 2024. 8. 7. 구조체 & 공용체 [1] ※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할수 있습니다. 오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다.구조체란?C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입입니다구조체는 관련 정보를 하나의 의미로 묶을 때 사용합니다. 특히 목적에 맞는 자료형을 만들어서 사용하는데 기본 자료형을 조합하여 만든 자료형을 파생형(derived type)이라 한다.선언 방법struct 구조체이름{ 멤버변수1의타입 멤버변수1의이름; 멤버변수2의타입 멤버변수2의이름; ...}; 익명 구조체 typedef struct 구조체이름{ 멤버변수1의타입 멤버변수1의이름; 멤버변수2의타입 멤버변수2의이름; ...}구조체의새로운이름;.. 2024. 7. 18. LSM/MSB , 리틀 엔디안 / 빅 엔디안 ※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할 수 있습니다. 오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다. LSB / MSBLSB는 Least Significant Bit의 약자로서 하나의 데이터 형에서의 가장 낮은 위치의 Bit를 의미한다.MSB는 Most Significant Bit의 약자로 어떠한 데이터 형의 최상위 비트를 의미한다. 엔디안이란?컴퓨터는 데이터를 메모리에 저장할 때, 바이트 단위로 저장한다.컴퓨터가 저장하는 데이터(시스템 비트)는 32bits(4bytes)나 64bits(8bytes)로 구성한다.따라서 연속되는 바이트를 순서대로 저장해야 하는데, 이것을 바이트 저장 순서(byte order), 엔디안이라고 한다. 빅 엔디안(big.. 2024. 7. 16. 이전 1 2 3 4 5 다음