不要在头文件中写函数定义
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 指令, 就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。
以上是关于不要在头文件中写函数定义的主要内容,如果未能解决你的问题,请参考以下文章