c++ - 使用 math.h 时预期的初始值设定项在 'extern' 之前

标签 c++ math.h

错误将我指向 math.h 文件的第 36 行,我没有弄乱它。 SRK.cpp 是唯一需要头文件的文件,但它不会,因此将它包含在头文件中似乎是合乎逻辑的。显然有些东西搞砸了(我个人认为那里有错字或其他简单的错误,但由于错误将我指向 C++ 中包含的头文件,我不知道去哪里找)。

标题.h

#ifndef HEADER_H
#define HEADER_H
#include <math.h>
double reducedP(double P, double Pc);
double reducedT(double T, double Tc);
double SRK(double Tr, double Pr, double acc);
#endif

主要.cpp

#include <iostream>
#include "header.h"
using namespace std;

int main()
{
    double T = 0;
    double Tc = 0;
    double Tr = 0;
    double P = 0;
    double Pc = 0;
    double Pr = 0;
    double acc = 0;
    double Z = 0;
    cout << "Enter Temperature: ";
    cin >> T;
    cout << "\n";
    cout << "Enter Pressure: ";
    cin >> P;
    cout << "\n";
    cout << "Enter  Critical Temperature: ";
    cin >> Tc;
    cout << "\n";
    cout << "Enter Critical Pressure: ";
    cin >> Pc;
    cout << "\n";
    Tr = reducedT(T,Tc);
    Pr = reducedP(P,Pc);
    cout << "Reduced T,P\t\t\t" << Tr << "\t\t" << Pr <<"\n";
    cout << "Enter accentric factor: ";
    cin >> acc;
    cout << "\n";
    Z = SRK(Tr, Pr, acc);
    cout << "Z is " << Z << "\n"; 
    return 0;
} 

SRK.cpp

double SRK(double Tr, double Pr, double acc)
#include <math.h>
{
    double alpha;
    double phi = 1;
    double epsilon = 0;
    double omega = 0.08664;
    double psi = 0.42748;
    double Zc = 1/3;
    double a = (1+(0.480 + 1.574*acc - .176*acc*acc)*(1-sqrt(Tr)));
    alpha = pow(a,2);
    cout << "Alpha is " << alpha << "\n";
    double beta = omega*(Pr/Tr);
    cout << "beta is " << beta << "\n";
    double q = (psi*alpha)/(omega*Tr);
    cout << "q is " << q << "\n";
    double Z = 0;
    double test = 0;
    double Z_init = 1;
    while(fabs(Z_init-test)>.00001)
    {
        Z = 1 + beta - (q*beta)*((Z_init - beta)/((Z_init)*(Z_init+beta)));
        cout << "\n" << Z_init << "\n";
        test = Z_init;
        Z_init = Z;
    }
    return (Z);
}

最佳答案

这个:

double SRK(double Tr, double Pr, double acc)
#include <math.h>
{

无效。您不能将系统头文件的 #include 放在函数签名及其主体之间。

将其更改为:

#include <math.h>
double SRK(double Tr, double Pr, double acc)
{

一般来说,您的 #include 行应该放在您的 .cpp 文件的顶部,在您的任何代码之前。

关于c++ - 使用 math.h 时预期的初始值设定项在 'extern' 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158298/

相关文章:

c++ - exp10 不同于 pow(10)

c++ - 如何在 C++ 中读取和解析 CSV 文件?

c++ - COleDataSource/COleDropTarget 取消拖放操作

c++ - 使用 wxWidgets 发布到 URL

c - -lm 不工作,除非它在命令的末尾

c++ - 用查找表替换 math.h exp 调用

c - 编译期间 C 中 pow() 的异常行为

c++ - 小投入,大产出?

c++ - Makefile 编译所有文件,即使更改是在单个 c++ 文件中完成的

c++ - 将 Sqrt(x) 计算为 x * InvSqrt(x) 在 Doom 3 BFG 代码中是否有意义?