代码块 C 项目 - 头文件冗余?(为什么项目不需要它来工作?



我正试图在代码块(控制台应用程序)中创建一个基本、简单的项目。

这就是我所拥有的:

  • main.c
  • 函数c
  • header.h

为了让它发挥作用,我创建了一个非常简单的程序,按照我认为应该填写的方式填写所有3个文件(基于我在网上找到的一些指南)。

main.c:

#include <stdio.h>
#include <stdlib.h>
#include "header.h"
int main()
{
    printf("Hello world!n");
    jogar();
    return 0;
}

函数c:

#include "header.h"
void jogar(){
    printf("Hello Mate!");
}

header.h

#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
void jogar();
#endif // HEADER_H_INCLUDED

所有这些都很好。我觉得奇怪的是,如果我删除header.h文件,一切都将以相同的方式运行(输出相同)。运行它不需要头.h文件吗?我做错了什么?

编辑:我的代码块版本是最新的(13.12)

更新#2-关于Aganju的输入,我已经将文件更改为:

main.c:

#include <stdio.h>
#include <stdlib.h>
#include "header.h"
int main()
{
    float x = 2.70;
    float a = jogar(x);
    printf("%f", a);
    return 0;
}

函数。c:

#include "header.h"
float jogar(float x){
    return x+1.10;
}

header.h:

#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
float jogar(float x);
#endif // HEADER_H_INCLUDED

现在,包含header.h后,输出为3.80000(应该是这样),如果我删除header.h中函数的原型,输出将是一些随机数。这就是理论上预期的结果吗?

一旦函数jogar有任何输入参数或返回的值超过int,它将不再工作,或者至少您失去了编译器的匹配功能(因此您可以用X调用,但需要Y,它不会告诉您)。

在头中没有声明的情况下,编译器会假设你的函数得到了什么,并返回一个int,这恰好适用于你的情况(在早期,让编译器这样做被认为是有帮助的)

删除头文件后编译项目吗?:-)

相关内容

最新更新