MFC에서 Excel 파일 불러오기1. 준비 단계Visual Studio에서 Excel COM 라이브러리를 참조로 추가.프로젝트 속성에서 Excel OLB 파일 경로를 지정.#include "afxdisp.h"를 프로젝트에 포함.2. 주요 구현 단계COM 라이브러리 초기화: AfxOleInit()와 CoInitialize() 사용.Excel Application 객체 생성: CoCreateInstance 호출.Excel 파일 열기: Workbooks.Open 메서드를 호출하여 파일 열기.셀 데이터 읽기: 특정 워크시트와 셀 선택 후 값 가져오기.COM 해제: CoUninitialize() 호출로 리소스 해제.3. 예제 코드#include "afxdisp.h"void ReadExcelFile() { ..
중첩 블록({})를 지양하는 코딩 스타일코드에서 중첩된 블록({})이 많아지면 가독성이 떨어지고 유지보수가 어려워집니다. 이를 방지하기 위해 Guard Clause Pattern을 사용하여 중첩을 줄이는 방식을 추천합니다.특징 및 장점가독성 향상: 중첩을 줄여 코드가 직관적이고 깔끔하게 보입니다.유지보수 용이: 조건을 만족하지 않을 경우 조기에 종료하여 추가적인 처리가 필요하지 않습니다.로직 흐름 단순화: 여러 if 문이 중첩되지 않아 조건 확인이 단순해집니다.나쁜 예: 중첩된 코드int myFunc(){ if (true == foo1()) { if (true == foo2()) { if (true == foo3()) { ..
C++ 요다 스타일 (Yoda Style)C++에서 요다 스타일(Yoda Style)은 조건문을 작성할 때 값이나 상수를 먼저 쓰는 방식으로, 스타워즈의 요다의 말투에서 영감을 받아 이름 붙여졌습니다.일반적인 조건문if (x == 42) { // 무언가를 수행}요다 스타일 조건문if (42 == x) { // 무언가를 수행}요다 스타일의 장점실수로 =(대입 연산자)를 사용하는 것을 방지할 수 있음컴파일 에러를 통해 잘못된 조건을 쉽게 찾을 수 있음예시:if (42 = x) { // 요다 스타일에서는 컴파일 에러 // 무언가를 수행}요다 스타일의 단점가독성이 낮아 처음 보는 사람에게는 읽기 어려움최신 컴파일러에서는 =와 == 혼동 시 경고를 제공함결론요다 스타일은 주로 과거 컴파일러의 제..
주요 기능 설명환형 큐:m_vQueue 벡터를 사용하여 환형 버퍼를 관리합니다.m_nHead와 m_nTail을 사용하여 큐의 시작과 끝을 관리합니다.멀티스레드 동작:std::mutex와 std::condition_variable을 사용하여 스레드 안전성을 보장합니다.Push와 Pop은 동기화되어 있으며, 상태에 따라 조건 변수를 사용하여 대기 상태를 처리합니다.큐 크기 확장:Push 메서드는 큐가 꽉 찬 경우 Resize를 호출하여 크기를 두 배로 확장합니다.큐 크기 축소:Pop 메서드와 MonitorQueue 메서드는 큐 크기가 일정 비율 이하로 줄어들면 크기를 절반으로 축소합니다.크기 축소는 최소 용량(m_nMinCapacity) 이하로는 진행되지 않습니다.모니터링 쓰레드:MonitorQueue 메서..
Thread와 싱글톤 상속의 문제점싱글톤과 Thread 클래스를 동시에 상속받는 것은 초기에는 코드가 간단해 보일 수 있지만, 실제로는 런타임 오류와 메모리 관리 문제를 일으킬 수 있는 설계상 큰 위험 요소입니다. 이 두 가지 상속의 문제점과 해결책을 정리해 보았습니다.문제점수명 관리 문제싱글톤 객체는 프로그램이 종료될 때까지 유지되지만, Thread 객체는 독립적으로 실행 및 종료되어야 합니다. 두 객체를 동시에 상속받을 경우, 싱글톤 객체의 수명이 Thread의 종료 타이밍에 영향을 미칠 수 있어 DLL 언로드나 프로그램 종료 시점에서 예기치 않은 문제가 발생할 수 있습니다.컴파일 타임 검증의 부재C++에서는 기본적으로 두 클래스를 상속받는 것에 대해 명시적인 제한이 없기 때문에, 개발자는 이러한 설..
#pragma pack 지시자는 구조체, 클래스, 또는 유니언의 멤버들이 메모리에 어떻게 배치되는지를 제어하는 데 사용됩니다. 기본적으로 컴파일러는 멤버들을 특정 바이트 경계에 맞추기 위해 패딩을 추가하여 최적의 성능을 보장하지만, 특정 상황에서는 이 패딩을 제거하고 메모리 사용을 최소화해야 할 필요가 있습니다. 이를 위해 #pragma pack을 사용하여 멤버들의 정렬 단위를 변경할 수 있습니다.#pragma pack 사용법#pragma pack(push, 1)과 #pragma pack(pop)은 구조체, 클래스, 유니언의 멤버 정렬을 제어하는 데 사용됩니다. 이 설정은 데이터 패딩을 줄여 메모리 사용을 최적화하거나, 파일 포맷 및 네트워크 프로토콜과 같은 특정 데이터 포맷과의 호환성을 위해 자주 사용..
- Total
- Today
- Yesterday
- 현포다이브
- 제주도
- 외돌개
- Linux
- Windows
- 블루버블다이빙팀
- CMake
- 서귀포
- C
- DLL
- 울릉도
- script
- OpenSource
- 패턴
- 암호화
- C#
- PowerShell
- Build
- 서귀포블루버블
- C# 고급 기술
- Effective c++
- 성산블루버블
- C#.NET
- 블루버블
- 블루버블다이브팀
- 스쿠버다이빙
- effective
- 스쿠버 다이빙
- C++
- 네트워크 정보
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |