OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3430|回复: 0

TouchGFX---new文件代码分析

[复制链接]

79

主题

395

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1765
金钱
1765
注册时间
2015-9-21
在线时间
544 小时
发表于 2022-2-11 14:04:37 | 显示全部楼层 |阅读模式
  1. // new standard header

  2. // Copyright (c) Microsoft Corporation.
  3. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

  4. #pragma once//为了避免同一个头文件被包含多次
  5. #ifndef _NEW_
  6. #define _NEW_
  7. #include <yvals_core.h>
  8. #if _STL_COMPILER_PREPROCESSOR
  9. #include <exception>
  10. #include <vcruntime_new.h>

  11. #pragma pack(push, _CRT_PACKING)//#pragma pack指定结构、联合和类的包对齐方式
  12. #pragma warning(push, _STL_WARNING_LEVEL)//#pragma warning该指令允许有选择的修改编译器的警告消息的行为
  13. #pragma warning(disable : _STL_DISABLED_WARNINGS)
  14. _STL_DISABLE_CLANG_WARNINGS
  15. #pragma push_macro("new")
  16. /*
  17. *#pragma push_macro把括号中的内容(宏)的值压入堆栈
  18. * #pragma pop_macro把括号中的内容(宏)的值弹出堆栈
  19. */
  20. #undef new

  21. _STD_BEGIN
  22. #ifdef __cpp_lib_destroying_delete
  23. // STRUCT destroying_delete_t
  24. struct destroying_delete_t {
  25.     explicit destroying_delete_t() = default;
  26. };
  27. inline constexpr destroying_delete_t destroying_delete{};
  28. #endif // __cpp_lib_destroying_delete

  29. #if _HAS_CXX17
  30. // FUNCTION TEMPLATE launder
  31. template <class _Ty>
  32. _NODISCARD constexpr _Ty* launder(_Ty* _Ptr) noexcept {
  33.     static_assert(!is_function_v<_Ty> && !is_void_v<_Ty>,
  34.         "N4727 21.6.4 [ptr.launder]/3: The program is ill-formed if T is a function type or cv void.");
  35.     return __builtin_launder(_Ptr);
  36. }

  37. #if defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM) || defined(_M_ARM64)
  38. inline constexpr size_t hardware_constructive_interference_size = 64;
  39. inline constexpr size_t hardware_destructive_interference_size  = 64;
  40. #else // ^^^ supported hardware ^^^ // vvv unsupported hardware vvv
  41. #error Unsupported architecture
  42. //#error命令时C/C++语言的预处理命令之一,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息TOU
  43. #endif // hardware

  44. #endif // _HAS_CXX17

  45. // SUPPORT TYPES
  46. #if !defined(_INC_NEW) || !defined(_MSC_EXTENSIONS)
  47. // handler for operator new failures
  48. using new_handler = void(__CLRCALL_PURE_OR_CDECL*)();
  49. #endif // !defined(_INC_NEW) || !defined(_MSC_EXTENSIONS)

  50. // FUNCTION AND OBJECT DECLARATIONS
  51. _CRTIMP2 new_handler __cdecl set_new_handler(_In_opt_ new_handler) noexcept;
  52. _NODISCARD _CRTIMP2 new_handler __cdecl get_new_handler() noexcept;
  53. _STD_END

  54. #pragma pop_macro("new")
  55. _STL_RESTORE_CLANG_WARNINGS
  56. #pragma warning(pop)
  57. #pragma pack(pop)

  58. #endif // _STL_COMPILER_PREPROCESSOR
  59. #endif // _NEW_
复制代码


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表