xref: /llvm-project/libcxx/include/cstdalign (revision f69585235ec85d54e0f3fc41b2d5700430907f99)
163eb40eeSA. Jiang// -*- C++ -*-
263eb40eeSA. Jiang//===----------------------------------------------------------------------===//
363eb40eeSA. Jiang//
463eb40eeSA. Jiang// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
563eb40eeSA. Jiang// See https://llvm.org/LICENSE.txt for license information.
663eb40eeSA. Jiang// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
763eb40eeSA. Jiang//
863eb40eeSA. Jiang//===----------------------------------------------------------------------===//
963eb40eeSA. Jiang
1063eb40eeSA. Jiang#ifndef _LIBCPP_CSTDALIGN
1163eb40eeSA. Jiang#define _LIBCPP_CSTDALIGN
1263eb40eeSA. Jiang
1363eb40eeSA. Jiang/*
1463eb40eeSA. Jiang    cstdalign synopsis
1563eb40eeSA. Jiang
1663eb40eeSA. JiangMacros:
1763eb40eeSA. Jiang
1863eb40eeSA. Jiang    __alignas_is_defined
1963eb40eeSA. Jiang    __alignof_is_defined
2063eb40eeSA. Jiang
2163eb40eeSA. Jiang*/
2263eb40eeSA. Jiang
23b9a2658aSNikolas Klauser#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
24b9a2658aSNikolas Klauser#  include <__cxx03/__config>
25b9a2658aSNikolas Klauser#else
2663eb40eeSA. Jiang#  include <__config>
2763eb40eeSA. Jiang
2863eb40eeSA. Jiang// <stdalign.h> is not provided by libc++
2963eb40eeSA. Jiang#  if __has_include(<stdalign.h>)
3063eb40eeSA. Jiang#    include <stdalign.h>
3163eb40eeSA. Jiang#    ifdef _LIBCPP_STDALIGN_H
3263eb40eeSA. Jiang#      error "If libc++ starts defining <stdalign.h>, the __has_include check should move to libc++'s <stdalign.h>"
3363eb40eeSA. Jiang#    endif
3463eb40eeSA. Jiang#  endif
3563eb40eeSA. Jiang
3663eb40eeSA. Jiang#  if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
3763eb40eeSA. Jiang#    pragma GCC system_header
3863eb40eeSA. Jiang#  endif
3963eb40eeSA. Jiang
4063eb40eeSA. Jiang#  undef __alignas_is_defined
4163eb40eeSA. Jiang#  define __alignas_is_defined 1
4263eb40eeSA. Jiang
4363eb40eeSA. Jiang#  undef __alignof_is_defined
4463eb40eeSA. Jiang#  define __alignof_is_defined 1
4563eb40eeSA. Jiang
4663eb40eeSA. Jiang#  if _LIBCPP_STD_VER >= 20
4763eb40eeSA. Jiang
48*f6958523SNikolas Klauserusing __standard_header_cstdalign _LIBCPP_DEPRECATED_("removed in C++20.") _LIBCPP_NODEBUG = void;
49*f6958523SNikolas Klauserusing __use_standard_header_cstdalign _LIBCPP_NODEBUG = __standard_header_cstdalign;
5063eb40eeSA. Jiang
5163eb40eeSA. Jiang#  elif _LIBCPP_STD_VER >= 17
5263eb40eeSA. Jiang
53*f6958523SNikolas Klauserusing __standard_header_cstdalign _LIBCPP_DEPRECATED _LIBCPP_NODEBUG = void;
54*f6958523SNikolas Klauserusing __use_standard_header_cstdalign _LIBCPP_NODEBUG                = __standard_header_cstdalign;
5563eb40eeSA. Jiang
5663eb40eeSA. Jiang#  endif
57b9a2658aSNikolas Klauser#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
5863eb40eeSA. Jiang
5963eb40eeSA. Jiang#endif // _LIBCPP_CSTDALIGN
60