我正在使用多个函数在visual studio中编写一个程序(c ++),我希望将其分布在多个.cpp文件中。我最初将所有函数(整个程序)包含在一个.cpp文件中并且它工作正常,但是现在当我试图将其分解时,我遇到了各种各样的错误。
我有一些全局变量,我最初在单个.cpp文件的顶部定义,但现在当我将一些使用这些常量变量的函数移动到单独的.cpp文件中时,我得到了错误。
如何在多个.cpp文件中共享这些常量变量?我应该创建一个包含所有常量全局变量的头文件,然后在每个使用它们的.cpp文件中以某种方式引用它们吗?
另外,由于我编写的一些函数调用了我也编写过的其他函数,如何将这些函数拆分为单独的.cpp文件并使一切仍然有效?我应该在每个.cpp文件中对所有必要的函数进行原型设计,我想在其中调用它们吗?
以下是我希望制作的一般格式:
main.cpp文件:
int main()
{
//calling functions such as minimax(), printBoard(), and others
//using global variables such as const in w_ or const int pDisc
}
minimax.cpp文件:
void minimax()
{
//code for minimax function
//minimax () calls other functions such as winDetect() and playMove()
//using global variables such as const in w_ or const int pDisc
}
helper_func.cpp文件:
winDetect(){//definition}
playMove(){//definition}
printBoard(){//definition}
//using global variables such as const in w_ or const int pDisc
我还有以下头文件,我想在每个.cpp文件中包含这些文件(不确定我是否需要将这些文件复制并粘贴到每个.cpp文件中,或者是否有办法将它们全局包含在内):< / p>
#include <string>
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <cstdlib>
提前感谢您的帮助!如果需要有关我如何组织该计划的更多信息,请告诉我们!
编辑:
我尝试设置一个头文件(称为con4.h),但我在con4.h中的每个函数声明中都出现错误,表示“表达式必须具有常量值”。对于某些声明,错误会多次抛出。这是完整的代码:
#include <string>
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <cstdlib>
#ifndef CON4_H
#define CON4_H
//pDisc = disc; cDisc = computer disc; nDisc = no disc
const int pDisc = 1, cDisc = 2, nDisc = 0;
//width and height variables
const int w_ = 7, h_ = 6;
//Base number of maximum iterations (depending on the stage in the game, recursion may go more or less deep)
const int MAX_ITER = 7;
//Values for SetConsoleTextAttribute()
HANDLE H = GetStdHandle(STD_OUTPUT_HANDLE);
const int BLACK = 0;
const int BLUE = 1;
const int GREEN = 2;
const int CYAN = 3;
const int RED = 4;
const int MAGENTA = 5;
const int BROWN = 6;
const int LIGHTGRAY = 7;
const int DARKGRAY = 8;
const int LIGHTBLUE = 9;
const int LIGHTGREEN = 10;
const int LIGHTCYAN = 11;
const int LIGHTRED = 12;
const int LIGHTMAGENTA = 13;
const int YELLOW = 14;
const int WHITE = 15;
//Declarations (but not definitions) for all functions
#endif
答案 0 :(得分:0)
你应该在标题中包含一个扩展名为.h的文件,这意味着你将从你的cpp文件中复制你的代码并放入主文件中。
请在这里查看c++ including .cpp files
答案 1 :(得分:0)
我应该创建一个包含所有常量全局变量的头文件 变量然后在每个.cpp文件中以某种方式引用它们 他们被使用了?
是的。请使用命名空间来做那个.consider也可以对它们进行分组。
另外,由于我写的一些功能会调用其他功能 我也写过的函数,如何拆分这些函数 到单独的.cpp文件,并使一切仍然有效?
通常,规范是通过将问题划分为易于管理的部分来开始设计程序。这些部分中的每一部分都可以实现为一个或多个功能。每个部分的所有功能通常都存在于一个文件中。
在你的情况下说:
//board.h
void printBoard(int board[][w_]);
void copyBoard(int board[][w_], int newBoard[][w_]);
//color.h
void printColor(string str, int color);
void printColor(int i, int color);
void printColor(char c, int color);
//algo.h
bool playMove(int board[][w_], int col, int who);
bool winDetect(int board[][w_], int who);
void minimax(int board[][w_], int score[], int who, int currentCheck, int iter);
//main.cpp
//include all header files and combine the logic
在面向对象的术语中,您可以通过创建board,color和algo类然后组合逻辑来实现上述逻辑。