#include

include

#include 就是将那个文件包含进来

实验

test.cpp:

#include <iostream>
using namespace std;
#include "hello.txt"

hello.txt:

int main()
{
cout<<"hello"<<endl;
return 0;
}

结果:

hello

D:\c++\test\Debug\test.exe (进程 21592)已退出,代码为 0。

但是include在包含cpp或c时或出错,因为编译器会尝试编译cpp或c。

需要保证原来的cpp可以通过编译,如下写法便不可以,这是在cl.exe和g++.exe这两个编译器下测试的结果。

main.cpp:

#include <iostream>
#include "func.cpp"
using namespace std;

int main()
{
    speak();
    return 0;
}

func.cpp:

void speak()
{
    cout<<"hello"<<endl;
}

会报错:

error C2065: “cout”: 未声明的标识符

那你可能要说了那就吧函数的实现放在txt中,然后包含进来不就完了。

你他娘还真是个天才,但是不感觉怪怪的嘛。

一般来说,.h头文件是写要包含的头文件,函数的声明,类的声明,宏的定义等。

函数的具体实现按照功能或类或作用域写到各自的cpp文件中。

如下:

head.h:

#ifndef CLION_TEST_HEAD_H
#define CLION_TEST_HEAD_H
#include<iostream>
void speak();
#endif //CLION_TEST_HEAD_H

main.cpp:

#include "head.h"
using namespace std;

int main()
{
    speak();
    return 0;
}

func.cpp:

#include "head.h"
using namespace std;
void speak()
{
    cout<<"hello"<<endl;
}

带默认参数函数的声明及实现

声明时设定默认参数,定义时不再设定默认参数,否则两次设定会导致报错。

错误写法:

head.h:

void speak(int number=2);

func.cpp:

void speak(int number=2)
{
    cout<<number<<endl;
}

报错:

重定义默认参数 : 参数 1

正确写法:

head.h:

void speak(int number=2);

func.cpp:

void speak(int number)
{
    cout<<number<<endl;
}
文章目录