假设我的宏定义如下:
#define info <TLS slot for thread>.info
如果没有为线程定义TLS区域,则需要
info_t info;
void foo()
{
info.details = 0;
....
}
如何在运行时更改info的定义,以便它根据线程指向MACRO值或声明?
这是一个多线程环境。
我们在函数foo()中使用info,并且无法更改此代码。有没有办法可以根据需要将其设置为指向宏或声明?如果需要,我们可以重命名宏和decl。
答案 0 :(得分:1)
预处理器在编译时处理C中的宏。在编译代码之后(实际上在预编译之后)宏不再存在。因此,在运行时修改宏是不可能的。
而不是宏,你应该有一个全局数组,其中每个元素包含特定线程的数据并对其进行操作。