首页 > 解决方案 > 如何在不使用对象的情况下连接字符串、整数和浮点数?

问题描述

我想在崩溃转储文件中添加信息,以防我的应用程序崩溃。

因此我创建了一个__try-__except子句:

__try
{
  Do_Something();
}
__except (ShowCrashdumpInformation(_T(__FUNCTION__));

而不是只是__FUNCTION__,我想添加更多信息,但我该怎么做呢?

最简单的方法是使用 a CString,但由于编译器错误而被阻止C2712(不能在需要对象展开的函数中使用 __try)。

所以,我想使用LPCTSTR字符串(在我的应用程序中广泛使用)。

结果它应该看起来像(CString替代):

CString temp; temp.Format(_T("Do_Something, int=[%d], float=[%f], string=[%s]), iParam, fParam, strParam);

有人有想法吗?
谢谢

标签: c++stringvisual-c++type-conversionconcatenation

解决方案


您可以使用预处理器宏来“字符串化”标准__LINE__宏,并依赖编译器相邻的字符串文字连接。

也许是这样的:

#define STRx(x) #x
#define STR(x) STRx(x)

#define FILE_FUNCTION_LINE (__FILE__ ":" __FUNCTION__ ":" STR(__LINE__))

...

ShowCrashdumpInformation(_T(FILE_FUNCTION_LINE))

只要您有文字值,您就可以使用STR宏将它们“字符串化”,然后使用相邻的字符串连接。

但是,不能使用变量,只能使用文字值。


推荐阅读