不要在头文件中写函数定义

Posted go-ahead-wsg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不要在头文件中写函数定义相关的知识,希望对你有一定的参考价值。

我们都知道static声明静态函数在别的文件是不可以使用的,但是如果你将定义也写在.h文件下是不是还是这样的呢,或者说编译器会不会提示你这样是有问题的呢?结果却是将static函数的定义直接写在了file.h的头文件中,导致staic关键字失效,代码如下。

//file1.h
#include <iostream>
using namespace std; static void fun() { cout << "static fun" << ends; }
//main.cpp
#include file1.h
int main()
{
    fun();
    return 0;
}

 技术图片

 

那么我们改下代码,就会提示编译错误,所以不要在头文件下定义,include会将它合并到main.cpp的前再编译的

//file1.h
#include <iostream>
using namespace std;
static void fun();
//file1.cpp
#include "file1.h"
static void fun()
{
  cout << "static fun." << endl;
}
//main.cpp
int main()
{
    fun();
    return 0;
}

技术图片

 

  总结一下:说到头文件就一定会想到头文件的用法#include...,做c/c++编程的对#include指令都不会陌生,绝大多数人也都知道如何使用,但我相信仍有人对此是一知半解的,#include <stdio.h> #include <iostream>,这两行代码我们在c和c++程序第一行基本都会包含。包含指令不仅仅限于.h头文件,可以包含任何编译器能识别的C/C++代码文件,包括.c、.hpp、.cpp、.hxx、.cxx等,甚至.txt、.abc等等都可以。预处理器发现 #include 指令后,就会寻找指令后面<>或“”中的文件名,并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源代码文件中的#include 指令, 就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。

以上是关于不要在头文件中写函数定义的主要内容,如果未能解决你的问题,请参考以下文章

C语言里, 一个函数怎调用,另一个函数的变量(不用返回)

C++函数的分文件编写

WIN32中我新建一个cpp和.h 在头文件中写了一个结构体然后在.cpp文件中使用该结构体总是报错具体如下图

结构体写在头文件中怎么写,在其它函数文件中怎么引用

结构体写在头文件中怎么写,在其它函数文件中怎么引用

C++ 怎么定义一个全局函数,能够在一个工程的所有文件中使用!