C ++在C中导出thread_local全局变量?

时间:2018-06-27 07:30:41

标签: c++ include thread-local

我正在使用C ++开发共享库,并希望用户包含C标头。

该库导出一个thread_local全局变量,因此应在标头中写入一条<option value="<?php echo $id; ?>"> <?php echo $name; ?> </option> 指令。

此变量只能在库代码(C ++)中进行修改,而只能在用户代码(C语言)中进行只读。

但是C语言没有extern关键字。 那么,有什么想法吗?

简单的thread_local绝对正确吗?

在C中修改变量的情况?一切仍然有效吗?

1 个答案:

答案 0 :(得分:0)

我想象变量是相对于存储在线程上下文中的指针引用的。甚至可能是一个寄存器。创建线程时,将分配数据并初始化指针以指向该线程。 (上下文始终需要空格。)当进程从一个线程切换到另一个线程时,当前上下文将存储在另一个上下文中,包括间接指针。如果未使用正确的类型,则链接时的修补将不正确,并且不会使用正确的内存区域。我不知道修补程序是否会出错,或者链接器是否知道符号类型,从而使ether出现显式错误,或者只是将全局视为未定义。即我不知道它是否将其视为不同的符号,相同的符号但声明有冲突的类型或相同的符号,但是混合引用方法会破坏代码。