将一些代码移植到GCC,与#pragma指令有一些问题

时间:2013-04-26 11:31:21

标签: c++ gcc c-preprocessor porting pragma

我正在尝试使用GCC编译此代码,并且我有这些#pragma指令,我正在尝试将其转换为GCC可理解的指令,而我无法弄清楚如何:

#pragma section(".CRT$XCA", read, write)
#pragma data_seg(".CRT$XCA")        // start of ctor section
_PVFV __xc_a[] = {0};

#pragma section(".CRT$XCZ", read, write)
#pragma data_seg(".CRT$XCZ")        // end of ctor section
_PVFV __xc_z[] = {0};

#pragma data_seg()
#pragma comment(linker, "/merge:.CRT=.rdata")

我知道要创建新版块,您可以使用__attribute__ ((section (".CRT$XCZ"))),但data_seg呢?

1 个答案:

答案 0 :(得分:3)

GCC使用不同且不兼容的方式注册全局构造函数。您应该根据GCC使用的ABI重写它,而不是试图移植它。

有关血淋淋的细节,请咨询例如GCC源代码树中的libgcc/crtstuff.clibgcc/gbl-ctors.h