gpt4 book ai didi

c++ - C/C++ 很酷的宏定义?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:15 26 4
gpt4 key购买 nike

除了__LINE____FILE__,还有其他有用的预定义宏吗,比如__FUNCTION_NAME__

如果没有,但您知道其他很酷/有用的已定义宏(尤其是用于调试目的),我很想听听它们。

有人问过平台:我在 MacOSX 上使用 gcc/g++。

最佳答案

我可以找到以下内容(来自 C99 草案的描述,但我认为它们在 C89 中也可用):

  • __DATE__:预处理翻译单元的翻译日期:一个字符形式为“Mmm dd yyyy”的字符串文字,其中月份与 asctime 函数生成的月份相同,并且如果值小于 10,dd 的第一个字符是空格字符。如果翻译日期不可用,一个实现定义的有效日期应提供。
  • __TIME__:预处理翻译单元翻译的时间:一个字符形式为“hh:mm:ss”的字符串文字,与由asctime 函数。如果翻译时间不可用,应提供实现定义的有效时间。

对于当前的函数名,C99定义了__func__,但是__FUNCTION_NAME__并不是一个标准的宏。另外,__func__ 不是宏,它是一个保留标识符(6.4.2.2p1):

The identifier __func__ shall be implicitly declared by the translator as if, immediately following the opening brace of each function definition, the declaration

static const char __func__[] = "function-name";

appeared, where function-name is the name of the lexically-enclosing function.

如果您正在寻找特定于平台的东西:这里是 gcc's common predefined macros 的列表.我喜欢 __COUNTER__,它是一个从 0 开始的唯一连续整数。我认为 __INCLUDE_LEVEL__ 也很酷,但不确定我是否能想到它的用途: -).

关于c++ - C/C++ 很酷的宏定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2212661/

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