//UTF-8 -> UNICODE -> CP949 void strcpy_UTF8(char *buf,char *s)//max=1024 { if(buf)if(s) { wchar_t bufw[1024]; MultiByteToWideChar(CP_UTF8,0,s, -1,bufw,1024); WideCharToMultiByte(CP_ACP,0,bufw, -1,buf,1024,NULL,NULL); } } void myprintf(char *fmt,...) { char buf[4096]; // 버퍼 크기는 필요에 따라 조절 가능 va_list args; va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); OutputDebugString(buf); Sleep(1..
uSD 32G : 13.3Mbyte/sec USB 64G : 11.6Mbyte/sec
"open()" 함수와 "fopen()" 함수는 각각 파일을 열기 위한 시스템 콜과 C 라이브러리 함수입니다. 이 두 함수는 목적이 조금 다르며, 성능과 메모리 사용량에는 일반적으로 차이가 있습니다. 1. 성능 차이 - "open()" 함수는 파일 디스크립터를 반환하며, 파일을 열 때 사용됩니다. 이는 시스템 콜로 직접 커널에 접근하는 방식이므로 더 낮은 수준의 동작을 합니다. - "fopen()" 함수는 파일 스트림을 반환하며, 라이브러리 함수이기 때문에 좀 더 높은 수준의 추상화를 제공합니다. - 일반적으로 "open()" 함수가 더 빠르지만, 상황에 따라서는 "fopen()" 함수의 편의성이 더 중요할 수 있습니다. 2. 메모리 사용량 - "open()" 함수는 파일 디스크립터만을 반환하므로 메모리..
몇글자 빼고는 모두 똑같은 코드인데, 문자열이나 함수명등에 일부 글자만 변경해서 여러개의 코드를 만드는 매크로 예) 입출력 포트 함수와 변수를 10개씩 만들어야하는데, 일일이 다 작성하기 너무 귀찮고 많음. #include // 매크로를 통해 여러 개의 코드를 생성하는 예제 #define GENERATE_CODE_WITH_NUMBER(NUM) \ void myFunction##NUM() { \ printf("This is function number %d\n", NUM); \ } \ char myString##NUM[] = "This is string number " #NUM; // 특정 숫자에 대해 코드 생성 GENERATE_CODE_WITH_NUMBER(1) GENERATE_CODE_WITH_NUMB..
open()는 파일을 여는 함수이고, 윈도우와 리눅스에서 모드 사용이 가능하다고 합니다. 윈도우에서는 _open()와 같은 함수를 제공합니다. 아래와 같은 매크로를 사용하여, 윈도우와 리눅스에서 모두 사용이 가능합니다. #ifdef _WIN32 #include #define open _open #define close _close #define read _read #define write _write #else #include #include #endif 파일을 열 때 사용되는 몇 가지 주요 플래그들은 다음과 같습니다: O_RDONLY: 읽기 전용으로 파일 열기. O_WRONLY: 쓰기 전용으로 파일 열기. O_RDWR: 읽기 및 쓰기 모두 가능한 파일 열기. O_CREAT: 파일이 없을 경우 새로 생성..
할일이 없어서 만드는건 아니다. KDP에 올려보려고 만들고 있다. 그런데,.... 내용이 졸라x9999999999999999999 많다... 이렇게 많은 줄 생각도 못했다... 이 내용을 다 알아야 제대로는 아니더라도, 문제가 덜 생기는 효율이 좋은 프로그램 작성이 가능해진다. 뭐 요새는 효율대신, "빨리"가 대세이긴 하다... 이렇게 많은 공부를 해서 프로그래머로 살아가고 있는데, 공부한거에 비하면, 급여는 너무 초라해 보인다. 물론, 다른 업종 전문직 종사자라면 다 그럴테지만... 요약 : 쉬운게 없다.
아두이노 소스를 수정없이 gcc 컴파일러로 빌드 할 수 있나요? 아두이노 소스코드를 수정없이 바로 gcc 컴파일러로 빌드하기는 어렵습니다. 아두이노 IDE에서 작성한 코드는 아두이노 보드에서 실행될 수 있는 형태로 변환되어 있기 때문입니다. 아두이노 IDE에서 작성한 코드는 아두이노 플랫폼에서 실행되는 것이 전제되어 있으므로, 아두이노에서 사용하는 특별한 라이브러리와 헤더 파일, 라이프 사이클 함수 등이 포함되어 있습니다. 이러한 라이브러리와 헤더 파일, 함수 등은 아두이노 프레임워크에서만 사용되며, 일반적인 gcc 컴파일러에서는 사용할 수 없습니다. 따라서 아두이노 소스코드를 gcc 컴파일러에서 빌드하려면, 해당 코드를 일반적인 C++ 코드로 변환하고, 아두이노 프레임워크에서 사용하는 라이브러리와 함수..
"싱글톤 패턴"은 객체 지향 디자인 패턴 중 하나입니다. 이 패턴은 특정 클래스의 인스턴스를 딱 하나만 생성하도록 보장하는 것입니다. 이를 통해 전역 변수를 사용하지 않고 객체 지향적인 방법으로 하나의 인스턴스를 공유하여 사용할 수 있습니다. 싱글톤 패턴을 구현하는 방법은 다양하지만, 일반적으로는 해당 클래스에 private 생성자를 선언하여 외부에서 인스턴스를 생성할 수 없도록 합니다. 그리고 해당 클래스 내부에서 유일한 인스턴스를 생성하고, 이를 반환하는 정적 메서드를 구현합니다. 이를 통해 해당 클래스의 인스턴스는 항상 유일하게 유지됩니다. 하지만 싱글톤 패턴은 동시성 문제 등의 문제점도 가지고 있습니다. 따라서, 사용에 주의가 필요합니다. 싱글톤 패턴은 객체 지향 디자인 패턴 중 하나이며, 애플리..

https://www.st.com/resource/en/application_note/an4808-writing-to-nonvolatile-memory-without-disrupting-code-execution-on-microcontrollers-of-the-stm32l0-and-stm32l1-series-stmicroelectronics.pdf 2개의 Bank를 사용하면, 한쪽은 코드실행, 한쪽은 쓰기가 동시에 진행가능.