C 언어 vs C++: `struct`와 `typedef`의 차이점 완벽 정리 C 언어를 공부하다 보면 struct MyStruct와 typedef struct MyStruct라는 두 가지 형태의 구조체 선언을 자주 보게 됩니다. 겉보기에는 비슷해 보이지만, 둘 사이에는 명확한 차이점이 있습니다. 이 글에서는 두 방식의 차이점을 쉽게 알아보고, 왜 C에서는 typedef가, C++에서는 전자가 더 많이 사용되는지 알려드릴게요. `struct`만 사용한 구조체 선언 이 코드는 MyStruct라는 이름의 구조체 태그(tag)를 정의합니다. 여기서 MyStruct는 구조체의 별명이 아니라, struct 키워드와 함께 사용해야 하는 진짜 이름입니다. 마치 '과일'이라는 카테..
순수 C++로 RSA 키 PEM 저장 및 불러오기🧠 설명 이 코드는 OpenSSL 없이 순수 C++만을 이용하여 RSA 2048비트 키를 PEM 파일 형식으로 저장하거나 불러올 수 있도록 구현한 예제입니다. 공개키, 개인키 모두 지원하며, KCMVP 인증용, 경량 시스템, 보안 제품 개발 시 매우 유용합니다.🧩 원인 외부 라이브러리에 의존하지 않고 독립적인 PEM 처리 구현 필요 KCMVP, CC 인증 등 보안 요구사항 충족 경량 OS 또는 보안 펌웨어에서 사용 목적🧰 핵심 기능 PEM 파일에서 Base64 부분 추출: LoadPem() Base64 ↔ 바이너리 변환: Base64Encode(), Base64Decode() PEM 저장: SavePrivateKeyToPemFile(..
🚦 C++ 디자인 패턴 - Dispatcher Pattern (디스패처 패턴)디스패처 패턴은 요청(Request)을 받아 알맞은 처리기(Handler)로 전달하는 구조입니다. 요청 유형에 따라 처리 로직이 다를 때, 중앙에서 분기하여 처리하도록 구성하는 방식입니다.🧩 구조Dispatcher: 요청을 적절한 핸들러로 분기Handler: 각 요청 유형에 맞는 처리 클래스Request: 요청 정보 (예: 명령 코드, 문자열, enum 등)🧪 예제 코드1. 요청 타입 정의enum class RequestType { LOGIN, LOGOUT, DATA};struct Request { RequestType type; std::string payload;};2. 핸들러 인터페이스 및 ..
📌 C++ 디자인 패턴 - Chain of Responsibility (책임 연쇄 패턴)체인 패턴은 요청을 처리할 수 있는 객체들을 연결된 체인 형태로 구성하여, 요청을 처리할 수 있는 객체가 나타날 때까지 다음 객체로 전달하는 구조입니다. 객체 간 결합도를 낮추고 유연한 구조를 만드는 데 유용합니다.🧩 구조Handler: 요청 처리 인터페이스 정의ConcreteHandler: 실제 요청을 처리하거나 넘기는 구현체Client: 첫 Handler에 요청을 전달🧪 예제 코드1. 추상 핸들러class Handler {protected: Handler* next = nullptr;public: void setNext(Handler* _next) { next = _next; } virtual..
C++ 스마트 포인터 정리1. 스마트 포인터 종류 및 예제 스마트 포인터 설명 소유권 예제 unique_ptr 단일 소유, 이동만 가능 O std::unique_ptr up = std::make_unique(10); shared_ptr 참조 카운트 기반 공유 O std::shared_ptr sp = std::make_shared(10); weak_ptr 소유권 없이 생존 확인용 X std::weak_ptr wp = sp;if (auto locked = wp.lock()) { *locked += 1;..

4편: DECLARE_PROPERTY – 반복되는 getter/setter 자동화객체지향에서 캡슐화는 중요한 원칙입니다.하지만 private 멤버 + public getter/setter 패턴은 너무 반복적이라 지겹죠.그래서 등장하는 것이 DECLARE_PROPERTY 같은 매크로입니다.😫 반복되는 getter/setterclass Person {private: std::string m_name;public: const std::string& GetName() const { return m_name; } void SetName(const std::string& name) { m_name = name; }};위 코드를 모든 속성마다 계속 작성한다면 생산성이 떨어지고, 실수도 많아집니다.?..
- Total
- Today
- Yesterday
- C
- 암호화
- C++
- Linux
- 블루버블다이빙팀
- 윈도우
- 리눅스
- Windows
- 현포다이브
- CMake
- Thread
- C# 고급 기술
- 디자인패턴
- 울릉도
- PowerShell
- 성산블루버블
- Build
- 블루버블다이브팀
- DLL
- 블루버블
- C#
- ReFS
- 제주도
- 스쿠버다이빙
- ip
- OpenSource
- 서귀포블루버블
- 패턴
- 다이빙
- 서귀포
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |