C++小知識點-分離式編譯

一些定義

隨着程序越來越複雜,我們希望把程序的各個部分分別存儲再不同的文件中.

一個程序,我們可以分成三個部分

​ 1.頭文件:包含結構聲明和使用這些結構的函數的原型

​ 2.源代碼文件:包含於結構有關的函數的代碼

​ 3.源代碼文件:包含調用於結構相關的函數的代碼

頭文件常包含的內容:

​ 1.函數原型

​ 2.使用#define 或const定義的符號常量

​ 3.結構聲明

​ 4.類聲明

​ 5.模板聲明

​ 6.內聯函數

一個例子

頭文件

head.h

#pragma once
#ifndef HEAD_H_H
#define HEAD_H_H
#include<string>
using namespace std;

struct Game
{
	string gameName;
	string gameScore;
};
void inputGame(Game games[], int size);
void sort(Game games[], int size);
void display(const  Game games[], int size);
const int Size = 5;
#endif // !HEAD_H_H

兩個源文件

Game.cpp 用來放函數的

#include<iostream>
#include "head.h"
using namespace std;
void inputGame(Game games[], int size) {
	for (int i = 0; i < size; i++) {
		cout << "請輸出喜歡遊戲的名稱" << endl;
		cin >> games[i].gameName;
		cout << "請輸入遊戲評分(10以內的小數):";
		cin >> games[i].gameScore;
	}
}
void sort(Game games[], int size) {
	Game temp;
	for (int i = 0; i < size - 1; ++i) {
		for (int j = i + 1; j < size; ++j) {
			if (games[i].gameScore < games[j].gameScore) {
				temp = games[i];
				games[i] = games[j];
				games[j] = temp;
			}
		}
	}
}
void display(const  Game games[], int size) {
	for (int i = 0; i < size; i++) {
		cout << i + 1 << ":" << games[i].gameName << "(" << games[i].gameScore << ")" << endl;
	}
}

主CPP

#include "head.h"
#include<iostream>

int main() {
	cout << "請輸入5個你喜歡的遊戲的名稱,並給它們評分:" << endl;
	Game games[Size] = {};
	inputGame(games, Size);
	sort(games, Size);
	display(games, Size);
	return 0;
}

運行結果

請輸入5個你喜歡的遊戲的名稱,並給它們評分:
請輸出喜歡遊戲的名稱
Steam
請輸入遊戲評分(10以內的小數):8
請輸出喜歡遊戲的名稱
LOL
請輸入遊戲評分(10以內的小數):8
請輸出喜歡遊戲的名稱
饑荒
請輸入遊戲評分(10以內的小數):8
請輸出喜歡遊戲的名稱
NBA
請輸入遊戲評分(10以內的小數):8
請輸出喜歡遊戲的名稱
沙灘排球
請輸入遊戲評分(10以內的小數):9
1:沙灘排球(9)
2:LOL(8)
3:饑荒(8)
4:NBA(8)
5:Steam(8)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章