cpp 파일의 전역함수 . extern "C" 처리
파일 확장자 .cpp 에서 클래스 멤버 외 전역함수 정의하면 C++ 방식 (Name Mangling) 으로 컴파일된다. cpp 내에서만 이함수 사용하는 경우에는 문제없지만 .c 파일에서 이 함수를 호출하려고 하는 경우 대응위하여 항상 extern "C" 로 가드처리한다.
// some_file.cpp
void my_c_style_func() //다른 C 파일에서는 호출 불가능함.
{
}
myclass::member_func{
my_c_style_func(); // 클래스 멤버함수 내에서 동일파일내의 전역함수 호출은 가능
}
//////////////// extern "C" 로 가드처리하면
// C 파일에서도 호출 가능해짐
extern "C" void my_c_style_func() {
}
myclass::member_func{
my_c_style_func(); // 클래스 멤버함수 내에서 동일파일내의 전역함수 호출은 항상 가능
}
/////// 결론.
cpp 내의 전역함수는 항상 extern "C" 가드해두면 항상 안전.
cpp 파일의 전역변수 도 동일하게 . extern "C" 처리
////// CPP 파일에서 전역변수. extern "C"
// 변수선언된 동일 cpp 파일에서만 이 변수에 접근하면 필요없지만
// C파일에서 에서도 이변수 접근하려면 필수.
// extern "C" 부착하면, cpp, c 파일 어디에서 호출하든 문제없음.
extern "C" my_st_t g_sensor_data;
첫 등록 : 2026.03.08
최종 수정 :
단축 주소 : https://igotit.tistory.com/6497
'VisualStudio.C++.C# > 코딩팁,함수활용,단편' 카테고리의 다른 글
| C/C++ . 구조체 typedef struct , struct 차이점 (0) | 2026.03.08 |
|---|---|
| winapi . 100나노초 UTC 시각 . GetSystemTimePreciseAsFileTime . (0) | 2026.01.22 |
| C . 실수 일정단위 분할하여 구간 인덱스만들기 . (0) | 2025.11.27 |
| 유니티 에서 C++ 로 제작된 DLL 활용 방법 . native plug-ins (0) | 2024.07.10 |
| MFC . CView . CDC TextOutW 문자열 출력. (3) | 2023.12.03 |
댓글