Vol*_*orm 3 c++ c-preprocessor
我有一个名为"err"的流,它位于命名空间Errors中.这就是开发人员如何以用户友好的方式报告错误.因此,当出现问题时,开发人员将编写错误消息:
Errors::err << "Oh no. That was a bad thing.";
Run Code Online (Sandbox Code Playgroud)
是否可以使用预处理器附加[__FILE__:__LINE__]到错误消息而不更改当前的错误报告样式?即上面的命令现在(在预处理魔术之后)将其输出到错误文件:
不好了.那是件坏事.[file.cc:20]
我自己试过这个,但是C预处理器似乎不喜欢命名空间,我觉得我不能在代码中的任何地方替换"错误" - 如果开发人员决定使用using Errors::err或者这将是一个更大的问题using namespace Errors.
在我想要实现的范围内,C-Preprocessor是否与编码风格根本不兼容?如果有的话还有其他任何方法(也许是基于Makefile的?)来做我想做的事情?
对于您目前的风格,这是不可能的.在运行时调用的例程不知道谁调用它们.但是,您可以使用特定于平台的函数来获取回溯并编写它.
如果您可以替换所有错误报告代码,例如.同
REPORT_ERROR( "Oh no. That was a bad thing." );
Run Code Online (Sandbox Code Playgroud)
这很容易.你只是#define宏
#define REPORT_ERROR(x) Errors::err << x << "[" << __FILE__ << ":" << __LINE__ << "]" << endl;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |