C语言,头文件不包含也能编译通过
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,头文件不包含也能编译通过相关的知识,希望对你有一定的参考价值。
我想连接include的问题,写了两个文件,创建个VC6工程
main.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
funca();
return 0;
a.c
#include<stdio.h>
void funca()
funca();
我想知道这为什么能编译过,能连接上,还能运行成功呢,main.c里面应该看不到funa才对啊?用VC6跟devc++编译器都这样,高手救命啊!!!
但 需要 math.h 时,必须自己加进去,不加,编译能通过,但数学函数计算结果得数可能错。
funca() 问题,main.c 把它看成外部函数,链接时才需要寻找 funca() 的入口。
CL main.c a.c 编译能通过,链接也能通过。
-------
CL main.c -c
CL a.c -c
CL main.obj a.obj
编译能通过,链接也能通过. 参考技术A 两个文件时单独编译的,生成两个 .obj 文件,译过程找语法错误不会报错;然后是连接过程,两个.obj 文件连接在一起后,生成了一个 .exe 文件,main 函数就看见funa函数了,所以连接成功追问
那这么说任何时候都没必要加头文件了,头文件意义在哪呢?
追答头文件的纳入是在编译的时候,编译的时候发现没有头文件会报错
参考技术B turboc
2.0编译系统中如果用到输入输出函数是可以不写,用到其他函数就要写对应得头文件,但是turbo
c
3.0中都要写。
你最好是写起嘛,这是一种规范,反正又不累! 参考技术C 当没有声明函数时,第一次调用会被默认为声明,其返回值类型会被默认为int 参考技术D 当没有声明函数时,第一次调用会被默认为声明,其返回值类型会被默认为int
C语言含有包含自定义头文件的程序怎么编译?
我用的是TC2。0,能说下具体怎么做吗?在主函数中加一个包含文件#include<>总是提示找不到文件
1、只要在程序开头加入#include “自定义头文件名”,在编译过程当中,头文件自动会被添加到源文件当中一起进行编译。
2、编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-->可执行文件。
以VC++7.0为例,首先要确保你的自定义的头文件被包含在项目(或工程)里,如果没有,就在源文件视图中右击“头文件”,单击添加,把自定义的头文件添加进去。随后,在源文件中加入如下的一行代码:
#include"自定义头文件名"即可。
不要#include<>,那个<>是用来包含标准的头文件的,对于用<>包含的头文件,系统会在系统路径中查找头文件,自定义的头文件应该用""来括起来,这样编译器就会在用户目录中搜索这个头文件,即要用#include"",而非#include<>本回答被提问者采纳
以上是关于C语言,头文件不包含也能编译通过的主要内容,如果未能解决你的问题,请参考以下文章
编写C程序时有时候不加头文件也能运行,这是为啥?是否有些头文件必须得加,而有些不用呢?