0
编译器是否使对象文件中的结构定义可用?假设我不打开像-g
这样的标志。在c中编译后的目标文件中是否有结构定义?
编译器是否使对象文件中的结构定义可用?假设我不打开像-g
这样的标志。在c中编译后的目标文件中是否有结构定义?
一般来说,没有。一旦代码被编译,C就没有用于结构定义。编译器将所有的成员引用转换是这样的...
foo.x = 1;
...到只知道x
是指在一定从foo
开始偏移某一类型的数据项汇编语言。 (某些硬件架构可能会使用不同的寻址机制,但它在概念上是相同的。)
可能有一个编译器将调试符号嵌入到目标文件中,而不是单独的调试文件。我不知道任何这样的编译器,但可以存在。但是,这根本不是一回事。这些符号可能只能由调试器加载,并且不能用于程序本身。
从包含结构定义的源代码编译样本对象文件,并查看它是否包含定义或不包含... – ForceBru
不需要它,因此可能不需要。 –