作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 global.h
的文件,其内容是:
#define DEPTH 10
#define LOGGING //to log the progress of the program.
#ifdef LOGGING
#include <fstream>
#include <string>
extern std::string logFileName;
extern std::ofstream logFileObj;
#endif
还有main.cpp
:
#include "global.h"
using namespace std;
#ifdef LOGGING
string logFileName = ".log";
ofstream logFileObj;
logFileObj.open(logFile); //line 13
logFileObj<<"depth: "<<DEPTH<<endl; //line 14
#endif
我在编译中经常遇到以下错误:
src/main.cpp:13:1: error: ‘logFileObj’ does not name a type
src/main.cpp:14:1: error: ‘logFileObj’ does not name a type
感谢任何帮助。
最佳答案
C++ 不允许在函数外进行操作。 C++ 允许您全局定义变量,但您需要将操作放在函数内。
如果我没看错你的问题,你只需要一个函数并在需要时调用它:
#include <fstream>
#include <utility>
#include <string>
template<typename T>
void WriteLog(const std::string& log_file_name, const std::string& prefix, const T& data)
{
std::ofstream log_file_handler(log_file_name.c_str(), std::ios::app); // if you use C++11, you could use string directly
log_file_handler << prefix << data << std::endl;
}
用法:
WriteLog<int>("app.log", "depth:", DEPTH);
关于c++ - 错误 : ‘logFileObj’ does not name a type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16896768/
我是一名优秀的程序员,十分优秀!