我正在通过C++书中的一个例子。并不了解某种情况。a.h包含在b.h中,我在源文件中包含b.h,是否需要在源文件中包含a.h?
main.cpp包含stdexcept.h以使用运行时异常。还包括ErrorHandlingModule.h。
ErrorHandlingModule.h已经包括了,因为它在函数原型在它运行时错误参数的stdexcept.h。
书上说我一定要还包括stdexcept.h在main.cpp中。在本书的源代码中,它也是这样写的。
当我删除的main.cpp编译sdtexcept.h通过就好了程序工作正常依旧。
但是为什么这本书说的那样?
感谢您的任何答案。
main.cpp中:
#include <iostream>
#include <stdexcept>
#include "ErrorHandlingModule.h"
#include "Prompt.h"
// ....
int main(int argc, char* argv[])
{
SAMSErrorHandlingModule::initialize();
do
{
try
{
char Operator = getOperator();
float Operand = getOperand();
cout << Accumulate(Operator, Operand) << endl;
}
catch(runtime_error RuntimeError)
{
SAMSErrorHandlingModule::handleRuntimeError(RuntimeError);
}
catch(...)
{
SAMSErrorHandlingModule::handleNotaNumberError();
};
}while (SAMSPrompt::UserWantsToContinueYorN("More?"));
return 0;
}
ERRORHANDLINGMODULE.H
#include <stdexcept>
#ifndef _ERROR_HANDLING_MODULE_H
#define _ERROR_HANDLING_MODULE_H
namespace SAMSErrorHandlingModule
{
using namespace std;
void initialize(void);
int handleNotaNumberError(void);
int handleRuntimeError(runtime_error theRuntimeError);
}
#endif // _ERROR_HANDLING_MODULE_H
当我从ErrorHandling Module.h中删除包含时,它不会编译。但你是对的。如果我需要使用更好的将来不使用sdtexcept的错误处理模块。主要还有其他一些用途,我需要包括它。 –
如果这是您所期待的答案,请将其标记为您的问题的答案。谢谢! –
感谢您的回答。 –