2013-12-05 6 views
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 не должны иметь; – Julius

+0

Просмотрите код после предварительной обработки. – chris

+2

Не используйте макросы, мой друг. – 0x499602D2

ответ

2
#define ARRAYSIZE 15 

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

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

double xArray[ARRAYSIZE]; 

переводит

double xArray[15;]; 

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


Делать это:

const int ARRAYSIZE 15; 

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

+0

+1 для предложения с использованием константы int вместо определения. Гораздо лучше практика на С ++. –

+0

Да. Я в основном работаю с «Objective-C», и поэтому я иногда использую '# define', но независимо от того, какой язык, когда я делаю что-то простое, я использую' const int' (или ' enum' в некоторых случаях, в зависимости от ситуации). – nhgrif

+0

nhgrif, '# define' должно быть последним средством на C++ из-за того, как они применяются (я согласен, что они иногда полезны и/или полезны). C/C++ несколько уникальны из-за фаз трансляции/компиляции, которые происходят. Скажем, '#define pi 3.14' для константы может показаться безобидным, но позже в неродственном месте кто-то другой может объявить' double pi = 3.14159'. Но, если первая версия препроцессора, второй, невинный экземпляр будет переведен в 'double 3.14 = 3.14159', что, очевидно, будет ошибкой. –

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;

Определение подставит ARRAYSIZE с тем, что там рядом с ним.

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

Так все, что вам нужно сделать, это просто удалить с запятой в операторе определения