C ++分隔源/头,错误C2146

时间:2014-02-19 11:20:50

标签: visual-c++ compilation compiler-errors

我开始使用一个长头文件和一个长源文件(我继承了一个混乱的项目,并希望尽快开始我的工作)。现在它已经“完成”了,我决定将其拆分以保持秩序(如果我将来需要更新它,请将其更易于管理。

我分阶段将它分开,一切顺利,有一次我不断收到错误C2146(基本上说没有指定类型)。

在我遇到以下情况之前:

MyAlg.h

#pragma once

#include <string>
using namespace std;

struct AlgParams {
    int   param1;
    int   param2;
};

void ParseParamFile(AlgParams& params, string& file_name);

ParseParamFile中定义了函数MyAlg.cpp。主要项目文件是

MyApp.h

#include "MyAlg.h"

#include <string>
using namespace std;

struct AppParams {
    string     inputFileName;
    string     paramFileName;
    AlgParams  AlgPrm;          // Note that the global parameter struct has
};                              // an AlgParams

MyApp.cpp中

#include "MyApp.h"

void RunMyAlg(SomeClass& data, AlgParams& params) {
    --- bla bla bla
}

void ParseCommandLine(char* argv, AppParams& params) {
    --- bla bla bla
}

int main(int argc, char* argv)
{
    AppParams  params;
    ParseCommandLine(argv, params);

    ParseParamFile(params, params.paramFileName);

    ////  some code to create and load algorithm data ////

    RunMyAlg(data, params.AlgPrm);

    return SUCCESS;
}

然后我将RunMyAlg的定义移到MyAlg.cpp(并在MyAlg.h中创建了一个声明)。从那以后它就不会编译,给我:

  

错误C2146:语法错误:缺少';'在MyApp.h的相关行中的标识符'AlgParams'之前。

可能导致这种情况的原因是什么?有没有办法在Visual Studio Express中获取编译顺序的报告?

0 个答案:

没有答案