뚜둔뚜둔✩

판다의 개발일지

분류 전체보기 23

[C++] 초기화 (Initialization)

대입과 초기화 대입 (Assignment) 대입은 = 대입 연산자를 사용하여 어떤 변수에 값을 지정하는 것이다. 이를 "copy assignment"라고도 하는데, 그 이유는 대입은 등호 왼쪽의 객체(변수)에 등호 오른쪽의 값을 복사하는 행위이기 때문이다. 하지만 그렇기 때문에 연산자 왼쪽의 객체(변수)가 이미 정의/생성되어 있어야 한다. 초기화 (Initialization) 반면, 초기화는 객체의 생성과 함께 최초의 설정값을 지정하는 것이다. 따라서 함수 호출의 회수가 대입에 비해 적으며 더 빠르기도 하다. 초기화로는 상수(const) 변수의 값 설정 또한 가능하다. 초기화의 방식 class Point { public: Point(int x_val, int y_val) { x = x_val; y = y..

C · C++ 2022.05.25

[C++] 구조체(struct)와 클래스(class)

구조체 여러 데이터 값을 갖는 어떤 새로운 타입을 정의할 때 흔히 구조체를 사용한다. C 언어에서의 구조체는 실제 데이터만을 포함하지만 C++에서는 데이터뿐만 아니라 생성자, 소멸자, 멤버 함수, 접근 지정자를 포함할 수 있다는 것이 다르다. [ C언어 ] struct Point { int x; int y; }; [ C++ ] struct Point { private: int x; int y; public: Point() {} ~Point() {} int getX(void) { return x; } int getY(void) { return y; } }; 접근 지정자 C++ 구조체는 접근 지정자로 특정 멤버 변수 및 함수를 외부에서 접근할 수 없게 할 수 있다. private 접근 지정자는 외부에서의 접..

C · C++ 2022.05.15

[PRACTICE] 흐름 제어 (Flow Control)

HTML 삽입 미리보기할 수 없는 소스 GOSUB - 서브루틴 format GOSUB [] 로 정의된 서브루틴을 실행한다. 실행되는 서브루틴 블록은 RETURN 명령어로 끝나야 한다. GOSUB function &val ENTRY &result // ... ENDDO function: ENTRY &var // ... RETURN &ret GOTO - 분기 format GOTO 에서 script 수행을 이어간다. 이때, 은 현재 수행 중인 script 내에서 정의되어 있어야 한다. JUMPTO - 분기 format JUMPTO 에서 script 수행을 이어간다. 이때, 은 현재 PRACTICE stack에 위치한 script 내 정의되어 있어야 한다. // script test_sequence.cmm DO..

기타/SCRIPT 2022.05.09

[PRACTICE] 변수 사용

HTML 삽입 미리보기할 수 없는 소스 MACRO PRACTICE script에서는 macro를 변수(variable)로 사용한다. macro는 &로 시작하며 영문자(a-z, A-Z)와 숫자(0-9), 언더스코어(_)로만 구성된다. 또, & 바로 다음으로는 숫자를 사용할 수 없으며, 대소문자가 구분된다. script 내 변수의 scope은 1) PRIVATE, 2) LOCAL, 3) GLOBAL 명령어로 지정된다. PRIVATE macro가 선언된 script / 서브루틴 / 블록 이내에서만 유효하며, script / 서브루틴 / 블록이 끝나면 제거된다. macro가 선언된 블록 내 중첩된 블록에서는 유효하지만, 다른 호출된 script 또는 서브루틴에서는 유효하지 않다. LOCAL macro가 선언된 ..

기타/SCRIPT 2022.05.07

[PRACTICE] Basics

HTML 삽입 미리보기할 수 없는 소스 1) 주석 추가하기 // 또는 ; 추가로 한 줄 주석을 추가할 수 있다. // comments start with // or ; or ; 하지만 ;의 경우, Var command group에서 주석이 아닌 다른 의미로 사용될 수 있기 때문에 //로 주석을 추가하는 것이 더 안전하다. Var.View flags[3];ast.count;i 2) 여러 줄에 나눠 쓰기 어떤 매우 긴 명령은 백슬래시(\)를 사용해 여러 줄에 나누어 작성할 수 있다. APPEND test_protocol.txt\ FORMAT.STRing("&testfunc=&correct_result",50.,' ')\ FORMAT.UnixTime("c",DATE.UnixTime(),DATE.utcOffSe..

기타/SCRIPT 2022.05.06

[PRACTICE] 조건문과 반복문

HTML 삽입 미리보기할 수 없는 소스 조건문 주어진 조건에 따라 수행하는 명령을 제어한다. IF "&testfunc"!="" ( IF Var.VALUE(&testfunc)==&correct_result ( PRINT FORMAT.STRing("&testfunc=&correct_result",50.,' ') ) ELSE ( PRINT FORMAT.STRing("&testfunc failed with &result (&correct_result)",50.,' ') ) ) 이때 조건문의 condition은 TRACE32 syntax를 따라야 한다. 또는, 사용된 programming 언어의 syntax로 condition을 정의할 수 있다. Var.IF (flags[0]==flags[5]) PRINT "Va..

기타/SCRIPT 2022.05.06

VSCode에서 cmm script 작성하기

PRACTICE cmm script를 작성하는데 가장 기본적인 방법은 TRACE32 SW가 제공하는 script 편집기를 사용하는 것이다. 문제는... 여기서 script를 작성하기엔 참 불편한 점들이 많다는 것이다. (느낌상으로는 기본 메모장에서 코드를 작성하는 것과 크게 차이가 느껴지지도 않는다) 그럼에도 불구하고 이 외의 다른 프로그램에서는 PRACTICE script syntax가 제대로 표시되지 않기 때문에 불편함을 감수하고 이 환경에서 작업을 할 수밖에 없다. 하지만...! 알고보니 VSCode에는 Lauterbach에서 배포한 PRACTICE script syntax highlight을 제공하는 extension이 있었다. 이 extension을 활용하면 훨씬 뛰어난 기능이 제공되는 편집기에..

기타/SCRIPT 2022.05.04

[C(++)] Header Guard (헤더 가드) Coding

HTML 삽입 미리보기할 수 없는 소스 .h 헤더 파일은 다른 .c나 .cpp 파일에 의해 include 되는 파일로, 여러 파일에서 공통적으로 사용되는 함수 정의 및 매크로, 구조체 등이 정의된 파일이다. #include 헤더 파일에는 1) 개발자가 직접 작성한 .h 헤더 파일과 2) 컴파일러가 제공하는 헤더 파일, 이렇게 2가지 종류가 있다. 종류에 따라 #include 전처리기를 선언하는 방법이 다음과 같이 달라진다. 1) 직접 작성 헤더 파일 #include "header_file" 2) 시스템 헤더 파일 #include 그렇다면 이 #include 전처리기는 어떤 동작을 하는지 살펴보자. 특정 파일에 #include 전처리기로 헤더 파일을 include 하는 것은 해당 파일에 헤더 파일 내용을 ..

C · C++ 2022.02.05