error: stray '\302' in program

error: stray '\302' in program

我有以下一段代码(内核代码更具​​体):

static int is_sram_locked(void)
{
if (OMAP2_DEVICE_TYPE_GP == omap_type()) {
    /* RAMFW: R/W access to all initiators for all qualifier sets */
    if (cpu_is_omap242x()) {
        __raw_writel(0xFF, OMAP24XX_VA_REQINFOPERM0); /* all q-vects */
        __raw_writel(0xCFDE, OMAP24XX_VA_READPERM0);  /* all i-read */
        __raw_writel(0xCFDE, OMAP24XX_VA_WRITEPERM0); /* all i-write */
    }
    if (cpu_is_omap34xx() && !cpu_is_am33xx()) {
        __raw_writel(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */
        __raw_writel(0xFFFF, OMAP34XX_VA_READPERM0);  /* all i-read */
        __raw_writel(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */
        __raw_writel(0x0, OMAP34XX_VA_ADDR_MATCH2);
        __raw_writel(0xFFFFFFFF, OMAP34XX_VA_SMS_RG_ATT0);
    }
    return 0;
} else
    return 1; /* assume locked with no PPA or security driver */
}

这是来自 sublime 3 的 copy-pasted,如标题所述,我得到以下编译错误:

error: stray '2' in program
error: stray '3' in program

在以 __raw_writel( ... )

开头的行上

我已经对这个问题进行了研究,我发现这个错误告诉我 cause 行中有一个不可打印的字符。

'\302 \273' 是 '»' 的 UTF-8 代码(RIGHT-POINTING 双角引号)

我了解到,当您从其他地方 copy-paste 编写代码时,这些无法打印的字符可能会跳过您的注意力,或者您的键盘布局不同,会键入奇怪的字符,因此经常会出现此问题。我仔细检查了代码,我找不到任何外来字符。

我的大问题是我从未接触过的内核代码怎么会出现这样的错误?我有不止一个文件出现这个错误,这让我意识到可能还有其他问题。

我发现我在以除字母之外的任何其他字母开头的行上遇到此错误,例如:'_' 和 '.' (这些是到目前为止对我来说引起问题的例子)

我尝试过的解决方案:

注意:我还使用 vim 作为编辑器,我的 .vimrc 将“»”作为 TABS,将“·”作为空格,但仅用于缩进目的,而不是实际字符.当我从 vim copy-pasted 并且这些字符实际上在文本中时,我已经修复了一些类似的错误,我删除了这些字符并且它得到了修复。但是为此我无法识别代码中存在的任何 'stray' 个字符。

我没有办法解决这个问题,所以我请求你的帮助。

宏是问题所在。他们提到了一些我用一些复制粘贴代码修改过的宏,然后完全忘记了。

特别感谢大家。