python mat函数:对C或C++的宏定义熟悉的请进!

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 16:45:55
伤脑筋!函数返回时打印行号:#define return if(ofstream("C:\\debug", ios_base::app)<<flush<<__FUNCTION__<<" Exit "<<__LINE__,0) return -1; else return,但是不是所有函数的类型都是整型,求高手重新设计这个宏,或其他方法不改动现存代码但可以完成既定功能.谢谢!
谢谢关注。第一个方法太麻烦了,第二个也不行,第三个方法原来的无条件返回就变成有条件返回,语义就变了。还有别的吗?

有三个解决办法:
1:在每个非数值类型的反回值的函数上重新定义:
#undef return
#define return .....
2:把返回的-1改成NULL,这样可以扩大返回类型范围.
3:不要自定义返回类型,把return -1去掉,如果出错调用导常函数(assert),让程序中断,或定义一个全局变量来标识错误(就象windows的GetLastError的方法)。
我建议你用第三个方法。

应该是没有别的办法了,主要是你的调试方法有点特别,调试代码通常是在函数内部定义的,在生成发布版本时用宏把调试函数定义成空语句,这样生成时一样不会生成任何代码。
调试函数就象下面这样定义(VC里定义的一部分):
#ifdef _DEBUG
#define ASSERT(f) (void) ((f) || !AfxAssertFailedLine(THIS_FILE, __LINE__) || (AfxDebugBreak(), 0))
#define TRACE ATLTRACE
#else // _DEBUG
#define ASSERT(f) ((void)0)
#define TRACE __noop
#endif // !_DEBUG