这可能很愚蠢,但我收到错误"; expected before "void" in the header file."
#ifndef PA1_H_INCLUDED
#define PA1_H_INCLUDED
void magicSquare(int n);
#endif // PA1_H_INCLUDED
这不是编写标题的正确方法吗?
这是主要的,其中pa1
是标题的名称
#include <iostream>
using namespace std
#include "pa1.h"
int main(){
cout<<"Enter the size of magic square: ";
int n;
cin>>n; //Enter the size of the magic square
if(n%2!=0 && n>=3 && n<=15){ //If the number is odd and between 3 and 15 run the program
int m=n;
magicSquare(m);
}
else{
cout<<"Number is not odd or is out of range."<<endl;
}
return 0;
}
这是magicSquare()
函数
void magicSquare(int n){
int square[n][n];
for (int i=0; i<n; i++){
for(int j=0; j<n; j++){
square[i][j]=0;
}
}
int a=0;
int b=n/2;
for(int c=1; c<=n*n; c++){
if(a<0 && b>=n){
a=a+2;
b--;
}
if (a<0)
a=n-1;
if(b>=n)
b=0;
if(square[a][b]){
a=a+2;
b--;
}
square[a][b]=c;
a--, b++;
}
cout<<"Magic square #1 is:"<<endl;
for (int a=0; a<n; a++){
for (int b=0; b<n; b++){
cout<<square[a][b]<<" ";
}
cout<<endl;
}
}
在magicsquare()
函数中,我首先使用创建它所需的各种条件将每个值分配给正确的位置来创建魔方,之后我打印了正方形。
只有当我在标题
;
之前写void
时,才能让它工作
答案 0 :(得分:1)
在此行之前可能存在无法识别的字符。如unicode白色空间。确保此行为空。
顺便说一句,如果此文件之前包含的任何其他头文件中的错误也会导致此问题。
在你的情况下,你已经失去了';'在'using namespace std'之后。
答案 1 :(得分:1)
错误很简单;你忘记在:
之前加一个分号using namespace std;
线。当你添加它时,你应该没事。