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