|
|
1
2
按照你想要的方式,这是不可能的。如果你有 if(condition)func(foo); 给一个宏,它可以把这些东西串起来,然后打印出来 if(condition)func(foo); ,但不替换变量的实际值。记住,预处理器不知道该代码的结构。 为了调试,我会使用一些类型安全的printf变体,如boost.format或一些自制的 printf with boost.fusion ,这使得打印这样的东西变得更加容易:
|
|
|
2
2
这是一个区域
当然,这有局限性,只适用于以下类型
我觉得Boost中的表达式分解技术可能有一些价值,但我还不足以成为一个模板忍者来识别什么。 更新 以下内容几乎回答了你的问题:
然而,当用作
这没有给出以下值的实际值
|
|
|
3
0
我通常使用简单但可定制的记录器功能,而不是宏
所以现在你可以做了
在函数LOG()中添加一些日志类型(即LOG_SCREEN、LOG_FILE),现在您可以控制它被记录到哪里 添加一些日志级别(即警告、CRIT)来控制其显示方式、颜色等。 当然,已经有很多图书馆在做这类事情了 希望这有帮助 |
|
|
4
0
与Greg的帖子方向不同,我看到了一些不错的C程序,看起来像这样
然而,你的程序中仍然有大量的printf,但至少你可以在想的时候打开和关闭它们。 |
|
|
5
0
您可以为自定义类定义运算符,因此只需定义一次格式:
这与将cout或clog重定向到文件非常匹配(不记得std::clog是如何工作的)
|