gpt4 book ai didi

c++ - 如何使用预处理器从源文件中获取文本行?

转载 作者:太空狗 更新时间:2023-10-29 21:48:03 26 4
gpt4 key购买 nike

我们有一个文件和一行 (__file__, __line__) 我们想打印它的内容。这样的事情可以通过预处理器实现吗?

最佳答案

也许是这样的?

#include <stdio.h>

#define DBG(X) printf(__FILE__":%d DBG("#X")\n", __LINE__)

int main ()
{
DBG(this is a test);
}

这会产生输出:

test.cc:7 DBG(this is a test)

编辑:您必须访问源文件或存储源文件。存储文件后,打印正确的行就很简单了。一种方式:

#define PROGRAM_PRINT_INIT(X) \
static ProgramPrint pp = ProgramPrint(X)
#define DBG(X) std::cerr << "[" << pp.name << ":" << X << "]" \
<< pp.file[X] << std::endl

struct ProgramPrint {
std::string name;
std::vector<std::string> file;
ProgramPrint (const char *filename) : name(filename) {
std::ifstream in(filename);
std::string line;
while (getline(in, line)) file.push_back(line);
}
};

请注意,vector 索引从零开始,因此相应地使用 DBG()

关于c++ - 如何使用预处理器从源文件中获取文本行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com