gpt4 book ai didi

C - 为什么我可以使用另一个源文件中的函数而不包含源文件?

转载 作者:行者123 更新时间:2023-11-30 15:17:10 26 4
gpt4 key购买 nike

早上好,

我所拥有的是以下内容:

//Simulator.h
#ifndef SIMULATOR_H
#define SIMULATOR_H

inline void functionn1(void);
#endif

然后我有它的实现:

//Simulator.c
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"

inline void functionn1(void){printf("Functionn 1\n");}

最后是主程序:

//main.c
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"

int main(int argc, char** argv)
{
functionn1();
return (EXIT_SUCCESS);
}

它按预期工作,但在使用它之后我注意到:

  1. 当我注释掉 Simulator.h 中的函数原型(prototype)时,它也有效
  2. 此外,当我注释掉函数原型(prototype)并故意不在 main.c 中包含 Simulator.h 时,该函数仍然有效。

为什么我做了上面两步之后就可以了?这里发生了什么样的恶作剧?

最佳答案

由于历史原因,C 也可以在没有任何函数原型(prototype)的情况下工作。缺点是不会进行参数检查。

只要有一个导出函数的目标文件,链接器就会知道如何将各个部分组合在一起。

关于C - 为什么我可以使用另一个源文件中的函数而不包含源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32648833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com