当试图编译我的程序时,我得到了错误
icpc -c main.cpp
main.cpp(4): error: expected a "{"
int main()
^
main.cpp(55): error: return value type does not match the function type
return 0;
^
它似乎没有将我的主函数识别为main函数。这是主要的功能代码,Makefile和标题:
main.cpp
#include <iostream>
#include "main.h"
int main()
{
float p,c,dt;
float P[10001], C[10001];
std::cout<<"For the following inputs, the equilibrium values for population and CO2 concentration are 120 and 340 respectively. nEnter your plant population, p, in 100m^2: ";
std::cin>>p;
std::cout<<"Enter your initial carbon concentration, c, in ppm: ";
std::cin>>c;
std::cout<<"Enter your time interval in number of hours: ";
std::cin>>dt;
dt = 0.01*dt;
co2(c,p,dt,P,C);
int idim,jdim,i1,i2,j1,j2;
idim=100;
jdim=100;
i1=0;
i2=100;
j1=0;
j2=100;
float Clo=0.0;
float Chi=5000.0;
float TR[6] = {0.5,1.,0.,0.5,0.,1.};
plotimage(C,idim,jdim,i1,i2,j1,j2,Clo,Chi,TR);
return 0;
}
头文件:
float dcdt(float, float);
float dpdt(float, float);
void co2(float, float, float, float[], float[]);
void plot(float[], float[], float);
void plotimage(float [],int, int, int, int, int, int, float, float, float [])
Makefile:
main: main.o dcdt.o dpdt.o co2.o plot.o plotmap.o
icpc -o main main.o dcdt.o dpdt.o co2.o plot.o plotmap.o -ltrapfpe -lpgplot -lcpgplot -lX11
main.o: main.cpp main.h
icpc -c main.cpp
dcdt.o: dcdt.cpp main.h
icpc -c dcdt.cpp
dpdt.o: dpdt.cpp main.h
icpc -c dpdt.cpp
co2.o: co2.cpp main.h
icpc -c co2.cpp
plot.o: plot.cpp main.h
icpc -c plot.cpp
plotmap.o: plotmap.cpp main.h
icpc -c plotmap.cpp
在头中的最后一个函数原型后面缺少分号
void plotimage(float [],int, int, int, int, int, int, float, float, float []);
// Here --------------------------------------------------------^
这就是为什么编译器告诉您它正在寻找一个开头的大括号:它看到了头的最后一行(它逐字包含在main.cpp文件中),并认为它正在寻找函数定义的开头,而不是前向声明。它可以看到返回类型、名称和参数类型列表,因此接下来应该是一个开头的大括号。
头文件中缺少分号
您错过了使用命名空间std;之后#包括(如果您使用的是MS Visual studio)您还错过了Jaguar和dasblinkenlight在上述答案中提到的分号。那是
#include<iostream>
using namespace std;