假设我有一个如下所示的宏定义:
#define info <TLS slot for thread>.info
如果没有为线程定义 TLS 区域,则需要定义
info_t info;
void foo()
{
info.details = 0;
....
}
如何在运行时更改 info 的定义,以便它指向 MACRO 值或取决于线程的声明?
这是一个多线程环境。
我们在函数 foo() 中使用信息,并且此代码无法更改。有没有办法可以根据需要将其设置为指向宏或声明?如果需要,我们可以重命名宏并 decl。
最佳答案
C 中的宏在编译时由预处理器处理。代码编译后(实际上是预编译后),宏不再存在。因此不可能在运行时修改宏。
您应该拥有一个全局数组,而不是宏,其中每个元素都包含特定线程的数据并对其进行操作。
关于c - 如何在运行时更改宏定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38464967/