본문 바로가기

분류 전체보기99

리터럴 접미사 사용하기 C언어 리터럴 접미사에 대해 정리하고자 한다.  일반적으로 변수 선언시, 정수 자료형으로 변수 크기를 정할 수 있다.리터럴 접미사를 활용해서 10진수 , 8진수 , 16진수 변수 크기를 지정할수 있다. 접미사는 대문자, 소문자를 모두 사용할 수 있으며 l과 u를 조합하여 크기와 부호 유무를 표현(대소문자를 섞어 쓸 수 있습니다). 접미사자료형Xintl, Llongu,Uunsigned intul,. ULunsigned longll, LLlong longull, ULLunsigned long long ex)#include int main(){ printf("%ld\n", -10L); // long 크기의 정수 리터럴 printf("%lld\n", -12345.. 2025. 3. 7.
조건부 매크로 컴파일 (#ifdef #ifndef) 이번 포스팅에서는 자주 사용하는 매크로중 하나인 조건부 매크로 컴파일 사용법에 대해 정리하고자 한다. 프로젝트 상 특별 경우에만 해당 코드를 실행해야할 경우가 많다. 예를 들어 디버깅용 printf문 나 특정 기기에서는 특정 기능 등이다. 이번 포스팅에서는 #ifdef #ifndef 조건부 매크로 컴파일에 대해 정리 하고자 한다. #ifdef1) 형태#ifdef 문자열(#else)#endif 2) 의미#define문으로 해당 문자열이 정의되어 있다면 #ifdef 문에서 선언된 코드를 실행한다.3)예시#define A#define B 0#define C 1#ifdef A // #define 되있기 때문에 실행 printf("Hello A");#ifdef B // #define 되있기 때문에 실행 print.. 2025. 2. 5.
[keil5 build error] undefined symbol error uvision keil5에서 프로젝트 소스 코드 빌드시 아래와 같은 에러가 발생하였다. "undefined sysmbol 함수명 error" 원인임의의 함수를 사용하려고 하는데, 함수가 선언만 되어 있고, 함수 구현이 되어 있지 않는 경우링커가 symbol table에서 linking 하는 과정에서 발생 해결 법헤더 파일에 선언된 함수 형태에 맞게 함수 구현이 이루어진다면 해결할 수 있다. 2025. 1. 22.
[keil5 빌드 에러] Error: L6406E: No space in execution regions with .ANY selector matching uvision keil5 에서 프로젝트를 빌드 시 아래에 같은 에러가 발생했다. Error: L6406E: No space in execution regions with .ANY selector matching 발생 원인 : 링커가 특정 메모리 영역에 할당하려고 했지만, 해당 메모리 영역에 충분한 공간이 없을 때 발생한다. project option에서 할당한 ROM/RAM 사이즈가 코드 크기에 비해 불충할 떄 가장 많이 발생한다.  따라서 project option에서 ROM/RAM 사이즈가 코드 크기와 비교하여 충분히 할당하도록 한다. 다른 STM32 IDE에서도  메모리 맵 파일 (scatter file)이나 linker script에서 특정 메모리 영역을 정의하지 않았거나,잘못 정의한 경우 발생할.. 2025. 1. 22.