문제
방금 외부 "C"를 사용하여 다음과 같은 외부 기능을 선언하는 C 코드가 있습니다.
extern "C" void func();
이것은 유효한 C입니까? 나는이 줄에서 오류가 발생하지만, 그것이 이것인지 다른 것인지 확실하지 않습니다.
해결책
아니요, 유효하지 않습니다. C 코드에 정의 된 함수를 참조하기 위해 C ++ 코드에서만 사용해야합니다. 그만큼 extern "C"
a ifdef __cplusplus
/#endif
차단하다:
// For one function
#ifdef __cplusplus
extern "C"
#endif
void func();
// For more than one function
#ifdef __cplusplus
extern "C"
{
#endif
void func1();
void func2();
#ifdef __cplusplus
}
#endif
다른 팁
이것은 컴파일러/링커에 C 호출 표준을 사용하도록 지시하는 C ++ 표기법입니다.
일반적으로 해당 라인은 사전 프로세서 명령문으로 랩핑됩니다.
#ifdef __cplusplus
extern "C" {
#endif
// stuff
#ifdef __cplusplus
}
#endif
전처리 후 존재하는 경우 C.에서 유효하지 않으면 표준에 따라 진단이 발생합니다.
C ++의 경우, 이것은 이름을 바꾸는 것입니다. 보다 이것 왜 필요한지에 대한 자세한 내용. 더 자세한 내용을 게시 할 수 있습니까?
제휴하지 않습니다 StackOverflow