проблема с добавлением второго файла .h / cpp в C

#c

#c

Вопрос:

Я довольно новичок в C , просмотрел несколько других тем о том, как включить второй cpp-файл, не уверен, что именно я делаю неправильно… В основном я получаю ошибки из массива grid и перечисления, и, по-видимому, я также не могу использовать void для файла minimax.h? остальная часть main.cpp файл работает нормально, пока я компилирую его один

minimax.cpp

 #include <stdio.h>      /* printf, scanf, puts, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */

void minimax(Gridamp; grid, Color color_player)
{
    int AI_Play;
    /* initialize random seed: */
    srand (time(NULL));

    /* generate secret number between 0 and grid size: */
    AI_Play = rand() % grid.size()   0;
    play(grid, AI_Play, color_player)
}
  

minimax.h

 #ifndef MINIMAX_H_INCLUDED
#define MINIMAX_H_INCLUDED

minimax(Gridamp; grid, Color color_player)

#endif // MINIMAX_H_INCLUDED
  

main.cpp

 #include <SDL.h>
#include <stdio.h>
#include <array>
#include <iostream>
#include <minimax.h>

using namespace std;

//Connect Four Array
#define COLUMN 6
#define ROW 7

//Screen dimension constants
const int SCREEN_WIDTH = 364;
const int SCREEN_HEIGHT = 312;

enum Color {red, black, nothing};

typedef array<array<Color, ROW>, COLUMN> Grid;
  

Комментарии:

1. какие именно ошибки вы получаете?

2. Я считаю, что это должно быть #include "minimax.h" не #include <minimax.h>

3. для перечисления и массива в main.cpp Я получаю сообщение not declared в этой области в более поздних частях я также получаю ту же ошибку в minimax.cpp только что попробовал «minimax.h» с теми же ошибками, также получая ошибки о том, что функция в minimax недействительна, а также инициализация для main.cpp

4. minmax.cpp не знает, что такое Color or Grid . Вероятно, их следует включить в minmax.h

5. как мне объявить их в minimax.h?

Ответ №1:

Вам нужно переместить объявление Grid и Color в minimax.h — иначе они не будут видны внутри minimax.cpp . Вам также необходимо включить minimax.h из minimax.cpp

Кроме того, вы должны объявить возвращаемый тип ‘void’ в вашей функции в файле .h..

Комментарии:

1. Я только что сделал это, кажется, исправил некоторые ошибки, но я не уверен, как объявить 2d-массив в minimax.h

2. minimax.h #ifndef MINIMAX_H_INCLUDED #определить MINIMAX_H_INCLUDED цвет перечисления {красный, черный, ничего}; typedef массив<массив<Цвет, 7>, 6> сетка; аннулировать минимакс (сетка и grid, Color color_player) #endif // MINIMAX_H_INCLUDED

3. Вам также нужно #include <array> открыть файл .h и переместить еще несколько включений по мере необходимости. Но — я / мы не можем рассказать вам о каждом сбое, поэтому моим советом было бы закрыть вопрос на этом этапе, поскольку ваша непосредственная проблема была решена.

Ответ №2:

Попробуйте изменить

 #include <minimax.h>
  

Для

 #include "minimax.h"
  

<header name> предназначен для встроенного заголовка.

Вам нужно включить внутри Color объявление Grid and minimax.h или поместить его куда-нибудь в файл, а затем включить его внутрь minimax.h . Ваш minimax.cpp также должен включать minimax.h

Ответ №3:

minimax() не знает, что такое Grid и Color , потому что вы не определили их перед определением minimax() . Вместо этого ваш код должен выглядеть примерно так:

minimax.h

 #ifndef MINIMAX_H_INCLUDED
#define MINIMAX_H_INCLUDED

#include <array>

//Connect Four Array
#define COLUMN 6
#define ROW 7

enum Color {red, black, nothing};

typedef std::array<std::array<Color, ROW>, COLUMN> Grid;

void minimax(Gridamp; grid, Color color_player);

#endif // MINIMAX_H_INCLUDED
  

minimax.cpp

 #include "minimax.h"

#include <stdio.h>      /* printf, scanf, puts, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */

void minimax(Gridamp; grid, Color color_player)
{
    int AI_Play;
    /* initialize random seed: */
    srand (time(NULL));

    /* generate secret number between 0 and grid size: */
    AI_Play = rand() % grid.size()   0;
    play(grid, AI_Play, color_player);
}
  

main.cpp

 #include <SDL.h>
#include <stdio.h>
#include <iostream>

#include "minimax.h"

//Screen dimension constants
extern const int SCREEN_WIDTH;
extern const int SCREEN_HEIGHT;

// use minimax() as needed, eg...

int main()
{
    Grid grid;
    ...
    minimax(grid, black);
    ...
    return 0;
}