MBy*_*ByD 4 c compiler-construction linker
C标准中是否有要求编译(和链接)二进制文件中的函数将出现在C文件中的有序中?
请假设在下面的示例中,编译器没有删除/内联任何函数,它们都存在于二进制文件中.问题不在于编译器可能对空函数做什么,而是关于函数的顺序.
例如,如果我编译example.c:
void bar() { }
void foo() { bar(); }
int main() { foo(); }
Run Code Online (Sandbox Code Playgroud)
我可以确定输出文件中foo会出现bar这种情况吗?
小智 5
不,C标准没有这样的要求.在编译和链接方面,仅明确提及函数的特定属性,例如外部或静态链接等,但即使这些也以与实现无关的方式进行描述.到目前为止,在任何标准文档中都没有任何条款(据我所知),它强加了对可执行文件中符号顺序的期望.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |