我想要一个宏(或任何其他有效的东西)可以遍历 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/