c++ - 用于计算文件中字符串数量的预处理器

标签 c++ c

我想要一个宏(或任何其他有效的东西)可以遍历 C/C++ 文件,并计算特定字符串(在物理 C/C++ 文件中)出现的次数。

#define numInFile(str) [???]

int main() {
    printf("blahblah");
    printf("You've used printf %d times", numinFile ("printf") - 2); //-2 account for this call
    return 0;
}

编辑:问题最初专门针对使用此功能进行退出调用。现在它已推广到任何用途。

最佳答案

如果我理解正确的话,您希望拥有唯一的错误代码,以便可以追溯到发生错误的行?

我会解决这个问题Y question instead of your X one :

您可以使用__LINE____LINE__ 扩展为当前行号的整数常量。您可以#define退出为:

#define quit(code) (quit)(__LINE__+(code))
void (quit)(code) { // seperate func in case you want to do more
    exit(code);
}

请记住,进程的退出代码并不是编码此类信息的最佳方式。在 POSIX 上,仅保证退出代码的低 8 位可用。但由于您已经使用 300 作为基值,我假设您使用的是 Windows 或其他一些系统,这不是问题。

出于调试目的,或者考虑在发生错误时写入 stderr(可能带有命令行标志)。

如果 exit 只是一个示例,并且您打算在应用程序中使用它,则可以将 __LINE____FILE__ 保存在全局 (或 _Thread_local) 错误变量并仅在错误代码中存储退出原因。

<小时/>

关于你的 X 问题,预处理器不会做这样的事情。您必须将此类任务卸载到构建脚本可以调用的 shell/perl/任何脚本。

关于c++ - 用于计算文件中字符串数量的预处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38571299/

相关文章:

c++ - 更现代的循环 C++ 数组的方式

c++ - boost::bind 和虚函数

c++ - 预构建代码块中的 .rc 到 .o 转换,访问文件的权限被拒绝

c++ - 用 C++ 编写的最漂亮的开源软件

对C中返回指针时的安全问题感到困惑

c++ - 用 C++ 实现引用计数

c - 二结构一功能

c - const 和 const volatile 之间的区别

c - 如何将int64_t分成两个int32_t通过网络发送?

c - 理解一个shellcode例子