【发布时间】:2016-07-19 17:30:45
【问题描述】:
假设我有一个类似于下面的宏定义:
#define info <TLS slot for thread>.info
如果没有为线程定义TLS区域,则需要
info_t info;
void foo()
{
info.details = 0;
....
}
如何在运行时更改 info 的定义,使其指向 MACRO 值或取决于线程的声明?
这是一个多线程环境。
我们在函数 foo() 中使用了 info,并且此代码无法更改。有没有办法可以根据需要将其设置为指向宏或声明?如果需要,我们可以重命名宏和 decl。
【问题讨论】:
-
“运行时”是什么意思?甚至在实际编译之前就对宏进行评估 - 这就是为什么它被称为 preprocessing。这在每个 C 编程介绍中都有解释。
-
“MACRO”和“runtime”是不兼容的术语。
-
我不认为你可以这样做,但我之前错了:)
标签: c windows multithreading macros