본문 바로가기
반응형

코딩취미/C,C++37

IAR 컴파일러 경고 해결: undefined behavior : the order of volatile accesses is undefined IAR 컴파일러 경고 해결: undefined behavior : the order of volatile accesses is undefined임베디드 C 개발을 하다 보면 IAR 컴파일러에서 아래와 같은 경고를 접하는 경우가 있습니다:Warning[Pa080]: undefined behavior : the order of volatile accesses is undefined in this statement 처음 보는 분들에게는 다소 생소할 수 있지만, 이 경고는 정의되지 않은 동작(undefined behavior) 이 발생할 가능성이 있음을 알려주는 중요한 신호입니다. 이 글에서는 해당 경고의 원인과 해결 방법을 예제와 함께 쉽게 설명드리겠습니다.🔍 문제 상황 예시아래는 문제가 되는 코드입니다:c.. 2025. 5. 2.
MFC에서 로그 파일 관리: 카테고리 구분 + 자동 파일 분할 기능 구현하기 MFC에서 로그 파일 관리: 카테고리 구분 + 자동 파일 분할 기능 구현하기MFC 기반 애플리케이션에서 작업의 진행 상태나 오류 내용을 기록할 때 텍스트 로그 파일을 활용하는 경우가 많습니다. 하지만 로그가 누적되면 파일이 점점 커지고, 열기조차 버거워지는 문제가 발생하죠.이번 포스트에서는 아래 기능을 포함한 깔끔한 로그 시스템을 직접 구현해보겠습니다:✅ 구현 목표로그 카테고리 구분 (예: INFO, DEBUG, ERROR 등)로그 파일 경로 직접 지정 가능어디서든 호출할 수 있도록 함수화파일 크기 초과 시 자동 분할 및 백업🛠️ 핵심 함수 설계🔸 함수 시그니처void WriteLog(CString category, CString message, CString logFilePath = _T("C:\\.. 2025. 4. 7.
C# 코드 정리 방법: 초보자부터 숙련자까지 (SOLID) C# 코드 정리 방법: 초보자부터 숙련자까지 (SOLID)C# 개발에서는 코드의 가독성과 유지보수성을 높이는 것이 매우 중요합니다. 잘 정리된 코드는 협업을 원활하게 하고, 버그를 줄이며, 성능을 최적화하는 데 도움을 줍니다. 이 글에서는 초보자와 숙련자를 위한 C# 코드 정리 방법을 단계별로 소개합니다.C# 코드 정리 단계별 가이드1. 초보자를 위한 코드 정리 방법초보자는 코드를 명확하게 작성하고, 가독성을 높이는 것이 가장 중요합니다.✅ 기본적인 코드 스타일 유지일관된 네이밍 컨벤션 사용 (PascalCase, camelCase)들여쓰기와 공백 유지 (4칸 들여쓰기 권장)코드 주석 추가 (특히 중요한 로직 설명)✅ 예제 코드: 기본적인 코드 정리using System;class Program{ .. 2025. 3. 2.
초보자를 위한 C언어 가변 인자 함수: va_list, va_start, va_end 완벽 가이드 초보자를 위한 C언어 가변 인자 함수: va_list, va_start, va_end 완벽 가이드C언어에서 가변 인자 함수는 인자의 개수가 고정되지 않은 경우, 다양한 개수의 인자를 받아 처리할 수 있는 강력한 기능을 제공합니다. 대표적인 예로 printf 함수가 있는데, 이 함수는 여러 개의 인자를 받아서 문자열로 출력합니다. 이러한 가변 인자 함수를 구현하기 위해서는 va_list, va_start, va_arg, va_end와 같은 매크로들을 사용해야 합니다. 여기에서는 이 매크로들의 역할을 자세히 설명하고, 가변 인자 함수를 작성하는 방법을 정리했습니다.1. 가변 인자 함수란?가변 인자 함수는 호출 시 전달되는 인자의 개수가 고정되지 않은 함수입니다. 예를 들어, printf 함수는 다양한 개수의.. 2024. 9. 13.
파일 입출력 초보 탈출! C언어 fopen_s 사용법 정리 (+ fopen 비교) 파일 입출력 초보 탈출! C언어 fopen_s 사용법 정리 (+ fopen 비교)C언어에서 파일을 다루는 것은 프로그램을 작성하는 데 매우 중요한 부분 중 하나입니다. 파일을 열고 데이터를 읽거나 쓸 때는 파일 입출력 함수를 사용해야 하는데, 그중에서 fopen_s는 보안이 강화된 파일 열기 함수로, 초보자가 파일 작업을 안전하게 시작할 수 있도록 돕습니다. 이번 글에서는 fopen_s의 기본 개념과 사용법을 쉽게 설명하겠습니다.1. fopen_s란 무엇인가?fopen_s는 C언어에서 파일을 여는 함수인 fopen의 보안 강화 버전입니다. 파일을 열 때, fopen_s는 더 엄격한 에러 처리를 제공하여, 파일 입출력 작업을 안전하게 수행할 수 있습니다. 보통 C언어에서 파일을 열 때는 fopen을 많이 .. 2024. 9. 12.
InvokeRequired를 사용하는 이유 (사용해야 할 상황 + 사용하면 안되는 상황) InvokeRequired를 사용하는 이유 InvokeRequired는 C# 윈도우 폼 애플리케이션에서 주로 사용되는 개념으로, 스레드 안전성을 보장하기 위해 사용됩니다. 일반적으로 UI 컨트롤은 UI 스레드에서만 직접 접근할 수 있습니다. 만약 다른 스레드(예: 백그라운드 작업을 수행하는 스레드)에서 UI 컨트롤에 접근하려고 하면, 예외가 발생하거나 예기치 않은 동작이 일어날 수 있습니다. InvokeRequired는 현재 호출 스레드가 UI 스레드인지 여부를 확인하고, 그렇지 않으면 UI 스레드에서 해당 작업을 실행하도록 안전하게 전달합니다.1. 목적과 특징목적: 비동기 작업(백그라운드 스레드)에서 UI 컨트롤에 안전하게 접근하여, 프로그램이 예외 없이 정상적으로 동작하도록 보장합니다.특징: Invo.. 2024. 8. 28.
반응형