본문 바로가기

프로그래밍 언어/c(임베디드)10

가변인자 함수 + 디버깅 매크로 가변인자란?가변인자란 인자의 개수가 변하는 인자디버깅 사용방법가변 인자와  내장 디버깅 매크로를 지원하지 않을 때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] ※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할수 있습니다.    오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다.구조체란?C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입입니다구조체는 관련 정보를 하나의 의미로 묶을 때 사용합니다. 특히 목적에 맞는 자료형을 만들어서 사용하는데 기본 자료형을 조합하여 만든 자료형을 파생형(derived type)이라 한다.선언 방법struct 구조체이름{    멤버변수1의타입 멤버변수1의이름;    멤버변수2의타입 멤버변수2의이름;    ...}; 익명 구조체 typedef struct 구조체이름{    멤버변수1의타입 멤버변수1의이름;    멤버변수2의타입 멤버변수2의이름;    ...}구조체의새로운이름;.. 2024. 7. 18.
LSB/MSB , MSB First/LSB First, 리틀 엔디안 / 빅 엔디안 ※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할 수 있습니다.    오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다. LSB / MSBLSB는 Least Significant Bit의 약자로서 하나의 데이터 형에서의 가장 낮은 위치의 Bit를 의미한다.MSB는 Most Significant Bit의 약자로 어떠한 데이터 형의 최상위 비트를 의미한다. 엔디안이란?컴퓨터는 데이터를 메모리에 저장할 때, 바이트 단위로 저장한다.컴퓨터가 저장하는 데이터(시스템 비트)는 32bits(4bytes)나 64bits(8bytes)로 구성한다.따라서 연속되는 바이트를 순서대로 저장해야 하는데, 이것을 바이트 저장 순서(byte order), 엔디안이라고 한다. ※추가 사항MSB.. 2024. 7. 16.
while문 사용법 c언어 프로그래밍 책을 보면 while(1.조건식){   2. 실행문} 실행 순서 1. ①조건식을 평가합니다. 평가 결과가 true이면 ②실행문을 실행합니다. 2. ②실행문이 모두 실행되면 다시 ①조건식으로 되돌아가서 다시 검사합니다. 3. 만약 ①조건식이 true라면 1,2번 순서를 다시 반복하고 아니면 while문을 종료합니다.  stm32 소스를 보면 일반적으로 while (조건문); 쓰는 경우를 종종 볼수 있다.  while (조건문)는 아래와 같다while (조건문) {} ex)while (!isLightGreen()); // isLightGreen() true를 반환할 때까지 기다린다.while(__HAL_TIM_GET_COUNTER(&htim1)  // 10ms or 10us 때까지 기다린다. 2024. 7. 13.