[2023/02/25] First Start.
소나무 기운 , 전자제품 개발/생산
C, C++, ino 파일 서로 섞어 쓰기.
아두이노에서는 ino 파일, c 파일, cpp 파일을 섞어서 사용할 수 있습니다. 일반적으로 ino 파일에는 setup() 함수와 loop() 함수가 포함되어 있으며, 다른 파일에서는 이 함수들을 정의하거나 추가적인 함수들을 작성할 수 있습니다.
ino, cpp, h 사용하기
cpp 파일을 header 파일로 분리하여 코드를 정리하고, 모듈화 할 수 있습니다. 이를 통해 코드의 가독성과 유지보수성이 증가하고, 코드를 재사용하기 용의해집니다.
아래는 cpp 파일을 header 파일로 분리하는 예시입니다.
1. 먼저, cpp 파일에 정의된 함수와 변수를 header 파일로 이전합니다. header 파일은 보통 .h 또는 .hpp 확장자를 사용합니다.
// myfunctions.cpp 파일
#include "myfunctions.h" // header 파일 포함
void myFunction(int arg1, float arg2) {
// 함수 내용
}
int myVariable = 42;
// myfunctions.h 파일
#ifndef MYFUNCTIONS_H
#define MYFUNCTIONS_H
void myFunction(int arg1, float arg2); // 함수 선언
extern int myVariable; // 변수 선언
#endif
2. 이제 ino 파일에서 header 파일을 포함시켜서 함수와 변수를 사용할 수 있습니다.
// main.ino 파일
#include "myfunctions.h" // header 파일 포함
void setup() {
// 초기 설정
}
void loop() {
myFunction(42, 3.14);
int value = myVariable;
}
위 예시에서, cpp 파일에 정의된 함수와 변수를 header 파일로 이전한 후, ino 파일에서 header 파일을 포함시켜 사용하고 있습니다.
주의할 점은, header 파일에서 함수를 선언할 때는 함수의 내용을 포함하지 않고, 함수의 시그니처만을 선언해야 한다는 점입니다. 함수의 내용은 cpp 파일에서 정의하도록 합니다. 또한, header 파일에서 변수를 선언할 때는 extern 키워드를 사용하여 선언해야 합니다. 이렇게 하면 변수를 정의한 cpp 파일에서 변수를 초기화하고, ino 파일에서 변수를 사용할 수 있게 됩니다.
ino에서 c, h 사용하기
ino 파일에서 c 파일에 정의된 함수를 호출하기 위해서는 header 파일을 사용해야 합니다. header 파일은 함수의 시그니처를 선언하고, ino 파일에서 함수를 호출할 수 있도록 합니다.
아래는 ino 파일에서 c 파일의 함수를 호출하는 예시입니다.
- 먼저, c 파일에 함수를 정의하고, header 파일에 함수를 선언합니다. header 파일은 .h 또는 .hpp 확장자를 사용합니다.
// myfunctions.c 파일
void myFunction(int arg1, float arg2) {
// 함수 내용
}
// myfunctions.h 파일
#ifndef MYFUNCTIONS_H
#define MYFUNCTIONS_H
void myFunction(int arg1, float arg2); // 함수 선언
#endif
2. 이제 ino 파일에서 header 파일을 포함시키고, 함수를 호출합니다.
// main.ino 파일
#include "myfunctions.h" // header 파일 포함
void setup() {
// 초기 설정
}
void loop() {
myFunction(42, 3.14);
}
위 예시에서, ino 파일에서 myfunctions.h 파일을 포함시키고, myFunction 함수를 호출하고 있습니다.
주의할 점은, c 파일에서 정의된 함수가 여러 개일 경우, 모든 함수를 header 파일에 선언해주어야 한다는 점입니다. 또한, c 파일에서 사용된 라이브러리가 있다면, ino 파일에서도 해당 라이브러리를 추가로 포함시켜주어야 합니다.
c파일에서 cpp파일 내 함수 호출
C 언어 파일에서 C++ 함수를 호출하려면, 해당 함수를 선언한 헤더 파일이 필요합니다. C++ 함수가 있는 파일에서 해당 함수를 선언하고 정의한 후, 해당 함수를 호출하려는 C 파일에서는 해당 함수가 정의된 헤더 파일을 include 해야 합니다.
아래는 C 파일에서 C++ 함수를 호출하는 예제입니다.
예제: C 파일에서 C++ 함수 호출하기
// c_plus_plus_functions.h 파일
#ifdef __cplusplus
extern "C" {
#endif
void cpp_function(); // C++ 함수 선언
#ifdef __cplusplus
}
#endif
// c_file.c 파일
#include "c_plus_plus_functions.h" // C++ 함수 헤더 파일 include
int main() {
cpp_function(); // C++ 함수 호출
return 0;
}
위의 예제에서는, "c_plus_plus_functions.h"라는 헤더 파일을 사용하여 C 파일에서 C++ 함수를 호출하고 있습니다. 이때, extern "C"를 사용하여 C++ 컴파일러가 해당 함수를 C 함수로 처리하도록 설정하고 있습니다. 이렇게 하면 C++ 함수를 C 파일에서 사용할 수 있게 됩니다.
마무리
cpp와 ino파일은 같은 성격을 가지며
cpp, ino에서 c의 함수를 호출 할 때는 그냥 사용해도 가능하며
c에서 cpp,ino의 함수를 사용 할 때는 extern "c"를 사용해 줍니다.
참고문헌
틀린 부분이나 질문은 댓글 달아주세요.
즐거운 하루 보내세요. 감사합니다.
'Arduino' 카테고리의 다른 글
아두이노 핀 번호 부여방법 두가지. (0) | 2023.09.02 |
---|---|
ESP8266, ESP32( S2, S3, C2, etc ) Series (0) | 2023.02.12 |
[M5Stack] ESP32 reset (software) 방법 (0) | 2021.06.16 |
[PlatformIO] PlatformIO가 궁금하다. (1) | 2021.01.24 |
[TB-I2C] IR 온도센서 (적외선) 사용하기 (0) | 2020.12.18 |
댓글