簡體   English   中英

C ++-需要有關如何正確設計多文件程序的建議

[英]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.hSingleplayer.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM