gpt4 book ai didi

c++ - 预定义宏的 __FILE__、__LINE__、__func__、stringify(#) 是如何工作的?

转载 作者:太空狗 更新时间:2023-10-29 19:45:37 24 4
gpt4 key购买 nike

如果我的编译器支持这些预定义的宏(__FILE__、__LINE__、__func__),那么我可以安全地使用它们,并假设它总是根据以下内容报告正确的文件和行:__FILE__, __LINE__, and __FUNCTION__ usage in C++

我还读到变量名、行号等与执行的程序集结束代码(从 .cpp 代码生成的实际 .exe 文件)无关,如果是这种情况,那么这些宏如何实现在代码中使用时工作? __LINE__ 宏如何用汇编代码表示?当遇到 __LINE__ 宏时,.exe 文件如何知道原始 .cpp 源代码的正确行号?

最佳答案

How is a LINE macro represented in assembly code?

不是。这些是预处理器 宏。预处理器运行后,它们将被替换为文字。

例如,如果您有以下代码:

void foo() {
printf("%d", __LINE__);
}

预处理器会把它变成这样:

void foo() {
printf("%d", 2);
}

关于c++ - 预定义宏的 __FILE__、__LINE__、__func__、stringify(#) 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379471/

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