목록프로그램/C,C++ (47)
Brise
#include #include // cout, cin, endl 을 위한 헤더 int main() { int n = 10; printf("n = %d\n", n); // C style scanf("%d", &n); // 입력 std::cout
// 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..
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에..
-- 123456789int **ptr; ptr = (int **)malloc(row * sizeof(int *));for( i = 0 ; i