c - 在c中,宏__FILE __,__ LINE__和__PRETTY_FUNCTION__是否分配内存?

标签 c multithreading pointers memory macros

让我们假设以下代码:
char* c = __FILE__;
c是否存在于堆栈或堆中? (作为后续措施-我可以将c传递给另一个线程进行处理,还是需要在其他地方存储数据?)。

谢谢你。

最佳答案

c是指针类型的变量,根据声明所在的范围,在声明它的任何位置(无论存储时间长短)存在。它使用字符串文字的地址进行初始化,该字符串具有静态的存储期限,不可修改,并且可能因相同的字符串而折叠。

如果将其更改为__PRETTY_FUNCTION__,则它与您询问的其他程序不同,因为它不是预处理器可以扩展的宏。预处理器从根本上不了解函数边界(如果函数实际上是由宏逐段定义的,则预处理器正在扩展?),因此它是一个特殊的扩展,本质上是一个隐式声明的数组类型的静态局部变量,使用包含以下内容的字符串初始化漂亮的函数名称。

关于c - 在c中,宏__FILE __,__ LINE__和__PRETTY_FUNCTION__是否分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59437509/

相关文章:

c - 指针和函数

c - C如何分配多维数组中的数据项?

c++ - 特定地址的外部变量

C 长度间距

c - UI + Worker 多线程问题

c 复制 ptr 的第一个字母

c# - 为单个任务创建多个线程

java - 如何同步不可修改的集合

objective-c - Objective-C 中的线程 : most efficient way for an update?

c++ - 成功分配的数组太大时访问指针时出错