__cplusplus 매크로를 이용해 지원하는 C++ 버전에 따라 조건부 컴파일을 수행할 수 있다.
int reduce_func(vector<int> S)
{
#if (__cplusplus < 201703L)
return accumulate(S.begin(), S.end(), 0);
#else
return reduce(S.begin(), S.end());
#endif
}
C++에서는 네임 맹글링을 방지하기 위해 extern "C"를 사용하는데 C 컴파일러에서 이것을 사용하면 컴파일 오류가 발생한다.
아래와 같이 처리하여 C++, C 컴파일러 모두에서 사용할 수 있다.
#ifdef __cplusplus
extern "C" {
#endif
/* All C declarations */
#ifdef __cplusplus
}
#endif
'C++ > 기타' 카테고리의 다른 글
클래스 전방 선언(Forward declaration) (0) | 2023.03.07 |
---|---|
override 키워드 (0) | 2023.03.01 |
swap(), iter_swap(), swap_ranges() (0) | 2023.02.18 |
재사용 가능한(Reusable) 코드 작성 (0) | 2023.02.16 |
배열의 크기를 확인할 때 주의할 점 (0) | 2023.02.13 |