C测试变量是否在只读部分

Joh*_*ohn 10 c macros gcc

我想编写一个低级日志记录功能,如下所示:

DO_DBG("some string", val1, val2)
Run Code Online (Sandbox Code Playgroud)

我想要它做的是,出于性能原因,将指针存储到字符串而不是字符串的副本.这假设字符串是只读文字.为了防止人们不得不调试调试器,如果编译器可以抱怨如果第一个参数DO_DBG位于代码与文本等的可写段中,那将是很好的.我想知道是否存在这样做的机制.(我正在使用gcc 4.9.1,ld 2.24).

Ami*_*mit 8

您可以使用自动文字字符串连接来获得优势:

#define DO_DBG(s, a, b) _DO_DBG("" s, a, b)
Run Code Online (Sandbox Code Playgroud)

并实现你的真实宏_DO_DBG.