gpt4 book ai didi

c++ - 在编译时打印类型的名称而不中止编译?

转载 作者:行者123 更新时间:2023-12-01 12:48:29 27 4
gpt4 key购买 nike

在这个问题中:

Print template typename at compile time

我们有一些关于如何让典型的 C++ 编译器在编译时打印类型名称的建议。但是,它们依赖于触发编译错误。

我的问题:我可以让 C++ 编译器在不停止编译的情况下打印类型的名称吗?

一般来说,答案是“可能不是”,因为可以将有效程序编译到其目标对象中而无需在任何地方打印任何内容,所以我特别询问 GCC 和 clang,可能使用预处理器指令、编译器内置程序或任何编译器- 特定的技巧。

笔记:

  • 显然,挑战在于 using/typedef 后面的打印类型语句、模板参数值、可变参数模板等。如果类型明确可用,您可以使用类似 #message "my type is unsigned long long" 的内容(正如@NutCracker 建议的那样)。但这不是问题所在。
  • 依赖 C++11 或更早版本的答案优于要求 C++14/17/20 的答案。
  • 最佳答案

    gcc 和 clang 提供了一些使用自己的插件的接口(interface),这些插件几乎可以在从解析到代码生成的不同阶段完成所有工作。

    接口(interface)是特定于编译器的,因为这是 gcc 的插件不能用于 clang,反之亦然。

    文档很杂乱,这里没有机会详细介绍,所以我只向您指出来自 gcc 和 clang 的文档:

    gcc plugin
    clang plugin

    关于c++ - 在编译时打印类型的名称而不中止编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60203857/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com