假设我有以下包含字符串的代码
const char* fmt = L"%s";
int main()
{
printf(fmt, L"hello");
}
在我编译之前,我希望发生一个事件来转换我的源代码,这样所有的字符串都被一个函数包装。最终代码应该是这样的
const char* fmt = w2mb(L"%s");
int main()
{
printf(fmt, w2mb(L"hello"));
}
Intelisense 可以识别字符串,所以我知道这是可能的。我该怎么做呢?我认为它与预构建事件有关。
最佳答案
预构建事件只是在运行编译器之前运行的命令行命令。如果你想用一个函数包装你程序中的所有字符串常量,你将需要编写一个预处理器来执行它。反过来,这将需要连接到 C++ 编译器前端。我知道 Roslyn 为 C# 做了这样的事情,但我不知道 C++ 有什么可用的。您可能会查看 clang,我认为这是 Visual Studio Code 用于其插件的;据我所知,MSVC 不是开源编译器。
当然,如果您正在处理以特别好的方式格式化的有限选择的文件,您可能不需要 C++ 解析器的全部功能;你甚至可以通过正则表达式或其他东西逃脱。
也就是说,这似乎是一件很奇怪的事情,您可能想考虑是否可以重新安排事情以避免必须这样做。
关于c++ - 如何修改预构建的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367546/