我的问题是在Code::Blocks及其经过调整的MinGW版本和Notepad ++的上下文中。

我希望能够在源代码中包含Unicode文字,并且可以,只要使用UTF-8而不使用BOM。

在某种程度上,这可以正常工作,但是每当我重新打开文件时,它都会将BOM弹出(坏双关);它(以毫不奇怪的方式)具有以ANSI形式显示Unicode的这种令人不安的副作用。 :(

那些非常有用但非常烦人的三个字节必须存在,然后它们必须走! (在编译时)。

听起来很简单,只需预处理源文件,然后丢弃前三个字节(如果它们是UTF-8 BOM)...

每次编译时,我当然都不会成为处理器(通过手动删除),所以我什至都对这些文字使用了无BOM的#include文件,但这在多个方面都是有问题的,尤其是这就是众所周知的痛苦,我看不到它们! ..没有太多的杂耍。

有什么方法可以使用自定义预处理器进入工具链?
...或者如果我错过了一些显而易见的解决方案,我将非常感激。

最佳答案

您可能仍要考虑将所有字符串文字外部化为单独的文件,并使用loadLit()函数(或类似函数)在运行时获取它们。

这将使您拥有包含所有字符串文字的单个文件(带有BOM),并且如果您必须对应用程序进行国际化,将使您的工作变得更加轻松。

我们会用我们的东西做到这一点,但请记住,我们的Class 1程序必须在21个不同的区域进行i18ned操作,因此我们通过这种方式来节省很多工作:-)您的工作量可能会有所不同。

关于c++ - 将自定义工具添加到工具链中,以在编译之前删除UTF-8 BOM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3127174/

10-13 07:33