Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

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