[英]C++ - need advice on how to properly design a multi-file program
好的,所以基本上我需要使用Allegro 5和C ++創建一個簡單的游戲。 我想將其拆分為單獨的模塊,以便於管理。 我的問題是:管理不同文件之間“移動”的正確方法是什么? 具體來說,我想有一個名為Menu.cpp的文件,它將作為主文件,然后根據用戶選擇的內容,它執行其他文件中指定的操作,例如Singleplayer.cpp或Options.cpp(甚至是一個好方法?)。 我的想法是這樣做:
//Menu.cpp
#include "Singleplayer.h"
int main()
{
int parameter;
if(user_selects_singleplayer) singleplayer(parameter);
return 0;
}
//Singleplayer.cpp
void singleplayer(int parameter)
{
...
handle_singleplayer
...
}
//Singleplayer.h
#ifndef SINGLEPLAYER_H
#define SINGLEPLAYER_H //or maybe #pragma once ?
void singleplayer(int parameter);
#endif
我想知道這是否是一種適當的方法,如果可以,是否應該在Singleplayer.cpp中具有main()函數(以及如何更改文件以使其正常工作)以及是否需要包含Singleplayer.cpp中的Singleplayer.h。
在我的示例中,我省略了一些東西,例如包括allegro庫,初始化更多變量等,以使總體思路更清晰。 我還要指出,我不能使用類和流(我知道這很愚蠢,但這是一個要求,因為該項目是編程類的家庭作業)。
編輯:@Leiaz鏈接的問題是相關的,它的答案對於理解標頭的工作方式當然很有幫助,但是我的問題更多是關於正確的設計方法。 無論如何,感謝您的回答,我一定會繼續閱讀該主題的。
以下是一些適用於大多數情況的規則:
每個cpp文件都有一個h文件,該文件包含在cpp中
main.cpp
包含main.h
, Singleplayer.cpp
包含Singleplayer.h
類定義和函數原型在頭文件中,實現在cpp文件中
h: int add(int x, int y);
cpp: int add(int x, int y){ return x+y; }
int add(int x, int y){ return x+y; }
僅包含頭文件,從不包含cpp文件
避免了多個定義問題,因為標頭具有代碼保護(您的定義),而cpp沒有
僅包含您實際需要的文件,以減少編譯時間
不要使all.h
包含您擁有的每個標頭。
如果可能,請將h文件包括在cpp文件中。 僅在標題中包含它(如果需要)。
減少編譯時間並避免循環引用
您應該對如何正確設計c ++項目進行一些研究,以了解其背后的原理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.