我需要static fstream
在多个源文件中使用 a 。但是我只能从单个文件中使用它,而不能从其他文件中使用它。此外,它在其他文件中的使用不会产生任何错误,它什么也不做。
这是代码:
/// log.h
#ifndef LOG_H
#define LOG_H
#include <fstream>
static std::ofstream ofs;
#define LOG(level) ofs << level << ": "
#endif
/// test.cpp
#include "log.h"
#include "other.h"
int main()
{
ofs.open("file.log");
LOG(5) << "Test log 1" << std::endl; // OK
OtherFunc();
}
/// other.h
#ifndef OTHER_H
#define OTHER_H
extern int OtherFunc();
#endif
/// other.cpp
#include "other.h"
#include "log.h"
int OtherFunc()
{
LOG(5) << "Test log 2" << std::endl; // Nothing
}
这是生成的文件:
5: Test log 1
谢谢!
平台:
Linux
g++ 4.5.1