본문 바로가기
VisualStudio.C++.C#/코딩팁,함수활용,단편

cpp 파일의 전역함수, 전역변수 . extern "C" 처리

by i.got.it 2026. 3. 8.

 

 

 

 

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


 

댓글



비트코인




            암호화폐/외환/나스닥/골드          
       
현물 |선물 인버스 |선물 USDT , bybit MT5               프랍 트레이딩. MT4,MT5