C++ 程序需要一个括号,但已有一个括号 #包括“stdafx.h” #包括 #包括 #包括 #包括 #包括 使用名称空间std; #定义排列15; 内部主(空) { //需要的东西 河流充填; 出流孔的直径; 双X阵列[阵列化]; }

C++ 程序需要一个括号,但已有一个括号 #包括“stdafx.h” #包括 #包括 #包括 #包括 #包括 使用名称空间std; #定义排列15; 内部主(空) { //需要的东西 河流充填; 出流孔的直径; 双X阵列[阵列化]; },c++,arrays,brackets,mismatch,C++,Arrays,Brackets,Mismatch,正如您所看到的,我的代码应该是有序的,但我的程序一直告诉我,它希望在xArray[ARRAYSIZE]所在的位置出现“[”。顺便说一下,我正在使用microsoft visual studio 2013 #include "stdafx.h" #include <iostream> #include <fstream> #include <cmath> #include <cstdlib> #include <iomanip> usi

正如您所看到的,我的代码应该是有序的,但我的程序一直告诉我,它希望在xArray[ARRAYSIZE]所在的位置出现“[”。顺便说一下,我正在使用microsoft visual studio 2013

#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];


}
#define
中取出

使用您的
#按原样定义

#define ARRAYSIZE 15
转化为

double xArray[ARRAYSIZE];
编译器希望在第一个
之前有一个
]


这样做:

double xArray[15;];

可能更好…

经过预处理后,您的代码

const int ARRAYSIZE 15;
因此,您必须删除
#定义中

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

    double xArray[15;];  // replace ARRAYSIZE with 15;
}
#定义数组化15

Define将用它旁边的内容替换ARRAYSIZE

因此,在这种情况下,它将用
15替换
ARRAYSIZE


因此,您只需删除define语句中的分号即可

\\define不应具有;在预处理后查看代码。不要使用宏,我的朋友。+1建议使用常量int而不是define。更好的C++实践。我主要使用
Objective-C
,因此,有时我实际上会使用
#define
,但无论使用哪种语言,当我做这样简单的事情时,我都会使用
常量int
(或
枚举
,在某些情况下,视情况而定),<代码>定义了,因为C++是如何应用的(我同意它们有时是有用的和/或有用的),这是最后的解决方案。由于翻译/编译的各个阶段,C/C++有些独特。比如说一个
#为一个常数定义pi 3.14
,可能看起来是无害的,但稍后在一个不相关的地方,其他人可能会声明一个
双pi=3.14159
。但是,如果先出现预处理器版本,则第二个无辜实例将被转换为
double 3.14=3.14159
,这显然是一个错误。哦,我同意。我的意思是,由于我在Objective-C中编写代码的频率最高,所以有时会使用
#define
。。。但这些情况几乎总是在编写Objective-C代码时出现。我几乎从不在
C++
中定义
#define ARRAYSIZE  15