码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-12-30 00:28:51      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:div   stream   static   iostream   导致   预处理器   ima   str   文件中   

我们都知道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 指令, 就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。

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

标签:div   stream   static   iostream   导致   预处理器   ima   str   文件中   

原文地址:https://www.cnblogs.com/go-ahead-wsg/p/12115933.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!