문제

방금 외부 "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 ++의 경우, 이것은 이름을 바꾸는 것입니다. 보다 이것 왜 필요한지에 대한 자세한 내용. 더 자세한 내용을 게시 할 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top