DEV.log

Extern "C" 블록 본문

WebAssembly/웹어셈블리 인 액션

Extern "C" 블록

magnae2016 2022. 1. 30. 18:02

컴파일러는 코드를 컴파일할 때 네임 맹글링, 즉 함수 매개변수 정보를 함수명에 추가하는 식으로 함수명이 중복되지 않게 바꿉니다.

그러나 외부 코드에서 특정 함수를 호출하려고 할 경우, 이렇게 컴파일러가 함수명을 임의로 변경하면 함수명으로 찾을 수가 없어서 문제가 됩니다.

그래서 자바스크립트에서 C++ 함수를 호출할 때에는 함수 주변을 extern "C" 블록으로 감싸야 합니다.

컴파일러에게 이 블록 안의 함수는 네임 맹글링을 하지 말라고 알리는 것입니다.

#ifdef __cplusplus
extern "C"
{ // So that the C++ compiler does not rename our function names
#endif

// 웹어셈블리 함수는 여기에 작성한다.

#ifdef __cplusplus
}
#endif

 

참고 자료

http://www.yes24.com/Product/Goods/92907281

 

웹어셈블리 인 액션 - YES24

웹 개발의 새로운 지평을 열게 될 잠재력 높은 기술!웹어셈블리를 처음 접하는 분을 위한 안내서로, 자바스크립트에 의존하지 않고도 브라우저 기반의 고성능 애플리케이션을 만들 수 있는 방

www.yes24.com

 

0 Comments
댓글쓰기 폼