c++ - 如何在不使用对象的情况下连接字符串、整数和浮点数?
问题描述
我想在崩溃转储文件中添加信息,以防我的应用程序崩溃。
因此我创建了一个__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);
有人有想法吗?
谢谢
解决方案
您可以使用预处理器宏来“字符串化”标准__LINE__
宏,并依赖编译器相邻的字符串文字连接。
也许是这样的:
#define STRx(x) #x
#define STR(x) STRx(x)
#define FILE_FUNCTION_LINE (__FILE__ ":" __FUNCTION__ ":" STR(__LINE__))
...
ShowCrashdumpInformation(_T(FILE_FUNCTION_LINE))
只要您有文字值,您就可以使用STR
宏将它们“字符串化”,然后使用相邻的字符串连接。
但是,不能使用变量,只能使用文字值。
推荐阅读
- reactjs - 如何避免我的 PostgreSQL 日期时间中的“Z”
- android - 获取在 android 设备中配置的帐户数量
- r - R Shiny stop 用于用户输入并显示所有图
- javascript - 运行两台服务器时NodeJS服务器错误
- neo4j - Neo4Js 客户端错误 apoc.load.csv 过程失败。由 ArrayIndexOutofBoundException 1 引起
- r - 没有假定更改时的更改点检测
- android - smoothScrollToPosition 在 recyclerView 中不起作用
- c - _fsopen() 究竟是如何工作的?
- oracle - PLSQL 块因“进入”而失败
- c# - WebAPI PushStreamContent 客户端读取视频流