编译器错误:在“int main”之前预期为“{”

时间:2013-12-04 05:02:09

标签: c++ compiler-construction makefile main

尝试编译程序时,我收到错误

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;
       ^

似乎没有将我的主要功能识别为功能。这是主要的功能代码,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 [])

生成文件:

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

3 个答案:

答案 0 :(得分:2)

在标题中的最后一个函数原型后,您缺少分号:

void plotimage(float [],int, int, int, int, int, int, float, float, float []);
//              Here --------------------------------------------------------^

这就是为什么编译器会告诉你它正在寻找一个开放的大括号:它看到了标题的最后一行(在main.cpp文件中逐字包含)并且认为它正在查看开头的函数定义,而不是前向声明。它会看到返回类型,名称和参数类型列表,因此接下来应该是一个开放的大括号。

答案 1 :(得分:0)

您错过了头文件中的分号

答案 2 :(得分:0)

你已经错过了 using namespace std; 在#include之后 (如果您使用的是MS Visual studio) 你还错过了Jaguar和dasblinkenlight在上面的答案中提到的分号。 那是

 #include<iostream>
 using namespace std;