我想编写一个低级日志记录功能,如下所示:
DO_DBG("some string", val1, val2)
Run Code Online (Sandbox Code Playgroud)
我想要它做的是,出于性能原因,将指针存储到字符串而不是字符串的副本.这假设字符串是只读文字.为了防止人们不得不调试调试器,如果编译器可以抱怨如果第一个参数DO_DBG位于代码与文本等的可写段中,那将是很好的.我想知道是否存在这样做的机制.(我正在使用gcc 4.9.1,ld 2.24).
您可以使用自动文字字符串连接来获得优势:
#define DO_DBG(s, a, b) _DO_DBG("" s, a, b)
Run Code Online (Sandbox Code Playgroud)
并实现你的真实宏_DO_DBG.