1*480093f4SDimitry Andric /*===- clang-c/ExternC.h - Wrapper for 'extern "C"' ---------------*- C -*-===*\ 2*480093f4SDimitry Andric |* *| 3*480093f4SDimitry Andric |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| 4*480093f4SDimitry Andric |* Exceptions. *| 5*480093f4SDimitry Andric |* See https://llvm.org/LICENSE.txt for license information. *| 6*480093f4SDimitry Andric |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| 7*480093f4SDimitry Andric |* *| 8*480093f4SDimitry Andric |*===----------------------------------------------------------------------===*| 9*480093f4SDimitry Andric |* *| 10*480093f4SDimitry Andric |* This file defines an 'extern "C"' wrapper. *| 11*480093f4SDimitry Andric |* *| 12*480093f4SDimitry Andric \*===----------------------------------------------------------------------===*/ 13*480093f4SDimitry Andric 14*480093f4SDimitry Andric #ifndef LLVM_CLANG_C_EXTERN_C_H 15*480093f4SDimitry Andric #define LLVM_CLANG_C_EXTERN_C_H 16*480093f4SDimitry Andric 17*480093f4SDimitry Andric #ifdef __clang__ 18*480093f4SDimitry Andric #define LLVM_CLANG_C_STRICT_PROTOTYPES_BEGIN \ 19*480093f4SDimitry Andric _Pragma("clang diagnostic push") \ 20*480093f4SDimitry Andric _Pragma("clang diagnostic error \"-Wstrict-prototypes\"") 21*480093f4SDimitry Andric #define LLVM_CLANG_C_STRICT_PROTOTYPES_END _Pragma("clang diagnostic pop") 22*480093f4SDimitry Andric #else 23*480093f4SDimitry Andric #define LLVM_CLANG_C_STRICT_PROTOTYPES_BEGIN 24*480093f4SDimitry Andric #define LLVM_CLANG_C_STRICT_PROTOTYPES_END 25*480093f4SDimitry Andric #endif 26*480093f4SDimitry Andric 27*480093f4SDimitry Andric #ifdef __cplusplus 28*480093f4SDimitry Andric #define LLVM_CLANG_C_EXTERN_C_BEGIN \ 29*480093f4SDimitry Andric extern "C" { \ 30*480093f4SDimitry Andric LLVM_CLANG_C_STRICT_PROTOTYPES_BEGIN 31*480093f4SDimitry Andric #define LLVM_CLANG_C_EXTERN_C_END \ 32*480093f4SDimitry Andric LLVM_CLANG_C_STRICT_PROTOTYPES_END \ 33*480093f4SDimitry Andric } 34*480093f4SDimitry Andric #else 35*480093f4SDimitry Andric #define LLVM_CLANG_C_EXTERN_C_BEGIN LLVM_CLANG_C_STRICT_PROTOTYPES_BEGIN 36*480093f4SDimitry Andric #define LLVM_CLANG_C_EXTERN_C_END LLVM_CLANG_C_STRICT_PROTOTYPES_END 37*480093f4SDimitry Andric #endif 38*480093f4SDimitry Andric 39*480093f4SDimitry Andric #endif 40