【发布时间】:2021-12-03 13:17:33
【问题描述】:
我正在使用用 Embarcadero C++ 编写的已有 12 年历史的遗留软件,我注意到:
当您在 32 位的调试或发布配置中使用 __func__ 或 __FUNC__ 时,它会返回 ClassName::FunctionName,但在 64 位的调试或发布配置中内置时,它仅返回 FunctionName。
这是预期的行为吗?我可以改变它吗?
我也希望 ClassName::FunctionName 在 64 位发布配置中。
我正在使用 Embarcadero® C++Builder 10.3 版本 26.0.36039.7899
到目前为止,我的 Google 技能一直令我失望,提前致谢。
【问题讨论】:
-
标准
__func__有一个实现定义的值。普通函数名与任何函数名一样有效。也许使用compiler specific macro 会更加一致。 -
@StoryTeller-UnslanderMonica 我尝试使用
__FUNC__并在原帖中提供了更多信息。__func__和__FUNC__仅在 32 位调试或发布时返回ClassName::FunctionName,在 64 位调试或发布时返回FunctionName。 -
通过获取函数名称你想解决什么问题?
-
@KarlKnechtel:问题描述似乎很清楚。我们可以推测(例如,日志文件之间存在相似性,因此您可以使用共享的日志文件解析器)但问题已经足够清楚,可以回答了。
标签: c++ c++builder