我开始使用一个长头文件和一个长源文件(我继承了一个混乱的项目,并希望尽快开始我的工作)。现在它已经“完成”了,我决定将其拆分以保持秩序(如果我将来需要更新它,请将其更易于管理。
我分阶段将它分开,一切顺利,有一次我不断收到错误C2146(基本上说没有指定类型)。
在我遇到以下情况之前:
#pragma once
#include <string>
using namespace std;
struct AlgParams {
int param1;
int param2;
};
void ParseParamFile(AlgParams& params, string& file_name);
ParseParamFile
中定义了函数MyAlg.cpp
。主要项目文件是
#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
#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中获取编译顺序的报告?