#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;
}