목록프로그램 (95)
Brise
// 2_namespace.cpp - 교재 7 page #include //핵심 1. 관련된 함수/구조체/전역변수 등을 하나의 이름공간에서 // 관리하는 기술 // 2. 이름의 충돌을 막고, 프로그램을 논리적으로 구분할수 있다 namespace Audio { void init() { printf("Audio init\n"); } } namespace Video { void init() { printf("Video init\n"); } } void init() { printf("global init\n");} int main() { init(); Audio::init(); Video::init(); } C언어에서 같은 이름을 갖는 함수나 변수가 중첩되는 이슈를 방지하기 위하여 C++에서는 namespace..
// 1. 확장자 // C언어 : .c // C++ : .cc .cxx .cpp // 2. C언어를 지원하지만 약간 다른 경우도 있다 // 1_hello.cpp #include int main() { printf("Hello world!\n"); }
임베디드 코드 프로젝트를 VScode로 열어서 볼 때 uint32_t 타입 오류가 표시되어 꽤나 거슬릴 때가 있다. 특히, 해당 타입 때문에 아래 있는 다른 구문들이 정상적으로 읽어지지 않을 때가 있는데, 해당 이슈는 사실 오류가 아니라, VScode가 특정 컴파일러에 기반하지 않는 시스템이기에 생기는 문제이다. cmsis에서는 여러 컴파일러에 맞추어 여러 매크로를 선언하고 있는데, 어떠한 컴파일러도 감지되지 않았을 때 오류를 선언하기 때문에 uint32_t 타입이 에러로 표시되는 듯 하다. 해당 이슈를 해결하기 위해서는 아래와 같은 방식으로 해결할 수 있다. - VSCode에서 Ctrl+Shift+P 를 입력한 뒤 C/C++: Edit Configuration(JSON)을 클릭 - c_cpp_prope..
Anaconda 환경에서 실행할 수 있는 파이썬 스크립트를 VS code 환경에서 실행하려고 할때 라이브러리를 정상적으로 찾지 못하는 문제가 있다. 해당 오류는 아래와 같이 출력된다. 이 때 문제를 해결하기 위해서는 Ctrl+Shift+P : Open Settings (JSON) 설정파일에 접근 한 뒤 아래 데이터를 JSON오브젝트에 추가한다. ... Insert follow data ... { ... "terminal.integrated.shellArgs.windows": ["/K", "C:\ProgramData\Anaconda3\Scripts\activate.bat C:\Anaconda3"], "python.condaPath": "C:\ProgramData\Anaconda3\Scripts\conda...
C언어에서 모듈러(modular) 연산의 기호는 %이다. 쉽게 생각하면 나머지 연산이지만, 기대와 다른 값이 나오는 경우가 있다. 만약 음수를 양수로 나눈 나머지나, 양수를 음수로 나눈 나머지의 경우이다. C에서는 이 부분에 대해서 컴파일러가 알아서 처리하도록 규정하고 있었지만, 표준이 개정되면서 그 부분이 개선되었다. C = A % B에서C의 부호는 A와 같다. 만약 -100을 9로 나눈 나머지를 구한다면, -1 이 나오는 식이다. 관련 자료 : http://ohyecloudy.com/pnotes/archives/1704/
PID 제어기를 계산 할 때 이전 Iteration의 값을 어떤 방식으로 유지할 건지에 대한 계산 방법이 여러가지 있다. 대부분 둘 중 한가지 방법을 이용하여 계산하는데 한가지 방법의 경우 이전 Iteration의 제어값을 유지하는 방법이 있고, 다른 한가지 방법은 이전 Iteration의 적분항을 유지하는 방법이 있다. 이전 제어값을 유지하는 방법의 경우 Iteration의 계산하기 위하여 이전에 계산된 P항과 D항을 제외하고 계산해주어야 하고이전 적분항을 유지하는 방법의 경우 Iteration을 계산하고 Output값과 적분항 모두에 anti-wind up 코드를 삽입해주어야 한다. 아래 코드는 윤덕용의 직류전동이 책의 일부와https://github.com/geekfactory/PID github에..
/* 구조링커는 여러 object file들을 하나로 합치는 것object file은 section과 symbol로 구성됨section은 loadable, allocatable 할 수 있고symbol은 defined or undefined 될 수 있다. */ /* section출력섹션은 두 주소를 가진다1. VMA(virtual memory address) : 출력파일이 실행될 때 섹션이 위치하는 주소2. LMA(load memory address) : 출력파일을 로드할때 위치하는 주소VMA != LMA인 경우 자료를 ROM에서 읽어서 RAM에 복사하는 경우LMA = ROMVMA = RAM*/ /* symbolsymbol = expression ;symbol += expression ;symbol -= ..
새로운 페이지에 들어가면 다음과 같은 파일을 볼 수 있다. 제목은 'connect the dots'로 나와 있는데 거의 당연하게도 사진에 나와 있는 선들을 연결하면 아무것도 연상되지 않는다. 흠... 그렇다면 일단 소스를 보자. 소스를 보니 이전 단계들의 솔루션을 어떻게 접근 가능한지 설명한 주석이 있다. 페이지로 들어가보면 여러 언어로 해결한 솔루션들이 제시되어 있는데 페이지 맨 아래단에 보면 문제에서 그림으로 나와져 있는 벌 모양을 어떻게 그리는지 코드가 설명되어 있다. 위 코드를 실행시켜주면 ** 주 : ID와 PW를 입력 한 뒤 솔루션을 보기 위해서는 pc를 pcc로 바꾸는 것 뿐만 아니라 주소에 ID와 PW를 넣어주어야 한다. 형식은 아래와 같다.http://[ID]:[PW]@www.python..