본문 바로가기

임베디드 소프트웨어/C, C++10

코딩 스타일 (C++) C++에서 코딩 스타일의 규약은 가독성, 유지보수성, 성능, 안정성을 고려한다.특히, 임베디드 시스템에서는 메모리 제어와 성능 최적화가 중요한 만큼 일부 규칙이 일반적인 C++보다 더 엄격할 수 있다. 가독성과 일관성을 위한 규칙일뿐 반드시 지켜져야하는 부분은 아니나, 프로젝트를 누군가와 협업한다면 규칙을 지키는 것을 권장한다.1. 네이밍 규칙 (Naming Conventions)로컬 변수 : 소문자로 시작, 언더바 _ 로 단어 구분int sensor_value; // _ 구분float temperature_celsius; // 카멜표기법 멤버 변수 : m_ 접두사 사용class Sensor {private: int m_value;};전역 변수 : g_ 접두사 사용int g_system_status.. 2025. 3. 4.
[C++] 클래스 상속(Inheritance) 개념 정리 1. 개요어느덧 C++ 클래스 설계 문법을 펌웨어 실무 (디바이스 라이브러리)에 적용하면서 익숙해져 가고 있다.최근 BSP 라이브러리와 링킹하여 사용하다가 클래스 상속과 관련된 부분에서 문제가 발생하였는데, 클래스 상속에 대한 개념을 다시한번 정리해보고자 하였다.2. 클래스 접근 제어자 (Access Specifiers) 복습C++에서는 다음과 같은 세 가지의 접근 제어 지시자를 제공한다.1. public2. private3. protected(1) public class MyClass {public: int publicVar; void publicMethod() { cout public으로 선언된 멤버는 어디에서나 접근 가능. 즉, 클래스 외부에서도 객체를 통해 직접 접근.. 2024. 10. 1.
[C/C++] 고정된 너비 정수 (fixed-width integers) 자료형 1. 고정된 너비 정수 (fixed-width integers)다음과 같은 고정된 너비 정수 자료형은 stdint.h 헤더파일 typedef로 정의되어 있다.고정된 너비 정수원시자료형바이트 (Byte)int8_tchar 1uint8_tunsigned char1int16_tshort2uint16_tunsigned short2int32_tint4uint32_tunsigned int4int64_tlong long8uint64_tunsigned long long8이 같은 자료형을 사용하는 이유는 비트수를 고정하여 모든 시스템(프로그램)에서 동일한 bit수를 사용하도록 위함이다.예를 들어 32 비트 정수는 항상 4byte(32비트)를 사용한다.고정된 너비 정수는 정해진 비트 수만큼 메모리를 차지하므로, 메모리 관.. 2024. 7. 9.
[C++] 참조자 (Reference)/ 참조에 의한 호출(Call-by-reference) 1. C++ 참조자#include using namespace std;int main(void) { int num1 = 2024; int &num2 = num1; // num2는 변수 num1을 참조한다. (num1의 참조자가 된다.) num2++; cout 기존 C언어에서 & 연산자는 변수의 주소값을 반환하는 연산자 였다.변수선언에서 변수명 앞의 & 연산자는 여기서 "참조자(Reference)" 선언의 의미가 된다.참조자는 비유적으로 별칭이다. (변수로 봐도 문제가 없다)오로지 변수만 참조할 수 있다.참조하는 변수 메모리 공간을 사용한다.참조자의 수에는 제한이 없으며, 참조자를 대상으로도 참조자를 선언할 수 있다. (하지만, 필요이상으로 선언하는 것은 바람직하지 못하다.)아래는 참조자 선언의 잘못.. 2024. 6. 21.
[C++] 함수 오버로딩 (Function Overloading) 1. 헤더파일 선언문의 확장자# include int main (void) { int num = 20 ; std :: cout  과거 입력 및 출력에 관한 일을 하기 위해서 .h 의 확장자를 붙여 헤더파일을 선언하였다.그러나 다음 2가지 이유로 헤더파일의 포함에는 확장자를 생략하기로 한다.현재 C++ 컴파일러는 를 지원하지 않는 추세로 접어들었다.과거의 표준 라이브러리와 새로운 표준 라이브러리의 구분새로운 표준 라이브러리를 사용하는 형태로 소스코드를 쉽게 변경할 수 있도록2. 함수 오버로딩 (Function Overlording)int MyFunc(int num) { num++; return num;}int MyFunc(int a, int b) { return a + b;}C언어에서는 위의 코드와 같이.. 2024. 6. 20.
[C++] 클래스, 객체 기초 C++에서 클래스(Class)란 객체(Object)를 정의하는 틀. 클래스에 멤버 변수와 멤버 함수를 선언한다. 흔히들 붕어빵 틀이 클래스, 붕어빵이 객체라고 비유한다. 1. 선언 및 형태 class Myclass { // 참고로 클래스명은 대문자로 시작하는 것이 국룰. public : // 접근지정자 public int a = 10; // 초기값을 넣어줄수도 있다.(2011년 C++ 표준) double b; char c; void getArea(void); // 함수선언이 가능 }; - 클래스는 class 키워드를 이용한다. C언어의 구조체(struct)를 선언하듯이 선언 마지막에 반드시 세미콜론을 추가한다. // C언어 구조체 struct Mystruct { // 구조체 이름 int member; /.. 2023. 8. 27.