Программа ожидает скобку, но там уже есть одна

0
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
#include <iomanip>

using namespace std;

#define ARRAYSIZE  15;


int main(void)
{
    //things needed
    ifstream infile;
    ofstream outfile;

    double xArray[ARRAYSIZE];


}

Как вы можете видеть, мой код должен быть в порядке, но моя программа продолжает говорить мне, что ожидает "[", где xArray [ARRAYSIZE]. Кстати, я использую Microsoft Visual Studio 2013.

  • 1
    \ #define не должен иметь;
  • 0
    Просмотрите код после предварительной обработки.
Показать ещё 1 комментарий
Теги:
arrays
brackets
mismatch

3 ответа

2
#define ARRAYSIZE 15

Возьмите ; из #define.

С вашей #define написанной как есть,

double xArray[ARRAYSIZE];

переводит на

double xArray[15;];

Компилятор ожидает ] перед первым ; ,


Делая это:

const int ARRAYSIZE 15;

может быть лучше...

  • 0
    +1 за предложение использовать const int вместо define. Гораздо лучше практиковаться в C ++.
  • 0
    Да. Я в основном работаю с Objective-C и, таким образом, иногда использую #define , но независимо от языка, когда я делаю что-то простое, я использую const int (или enum в некоторых случаях, в зависимости от ситуация).
Показать ещё 2 комментария
0

после препроцесса ваш код

int main(void)
{
    //things needed
    ifstream infile;
    ofstream outfile;

    double xArray[15;];  // replace ARRAYSIZE with 15;
}

поэтому вам нужно удалить ; в #define

#define ARRAYSIZE  15
  • 0
    Спасибо, это сработало!
0

#define ARRAYSIZE 15;

Define заменит ARRAYSIZE тем, что рядом с ним.

Таким образом, в этом случае он заменит ARRAYSIZE на 15;

Итак, все, что вам нужно сделать, - это просто удалить полуколонну в инструкции define

Ещё вопросы

Сообщество Overcoder
Наверх
Меню