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