У меня есть следующий фрагмент кода (кода ядра, чтобы быть более точным):ошибка: шальная « 302» в программе
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 */
}
Это копия-вставили от возвышенного 3, а в качестве названия государств, Я получаю следующее сообщение об ошибке компиляции:
error: stray '\302' in program
error: stray '\273' in program
на линиях, которые начинаются с __raw_writel(...)
Я проводил исследование о проблеме, и я узнал, что эта ошибка говорит мне, что есть непечатаемый символ в строке.
«\ 302 \ 273» является UTF-8 код «»»(ПРАВАЯ УКАЗЫВАТЬ DOUBLE УГОЛ КАВЫЧКА)
я прочитал, что эта проблема часто появляется при копировании и вставки кода где-то еще и те, непечатаемые символы, возможно, пропустили ваше внимание, или ваша клавиатура имеет другой макет, который вводит странные символы. Я внимательно изучил код и не смог найти ни одного из этих иностранных персонажей.
Мой большой вопрос: как код ядра, который я никогда не касался, может представлять такие ошибки? И у меня есть более одного файла, который приходит с этой ошибкой, что приводит меня к тому, что может быть что-то еще неправильно.
Я понял, что получаю эту ошибку в строках, которые начинаются с чего-либо еще, кроме буквы «_» и «.». (Это примеры, которые поднимаются вопросы, для меня до сих пор)
Solutions Я пробовал:
- переписывание целые строки;
- Скопируйте и вставьте код в много UTF-8 нецензурной характер фильтры, так что я могу найти «бродячие» символы
- Unicode Character Highlighter возвышенных пакеты
Примечание: Я также использую Vim в качестве редактора и мой .vimrc ставит «» как TABS и «·» как SPACES, но только для отступов, а не как фактических символов. Я исправил некоторые подобные ошибки, когда я скопировал с vim, и эти символы были на самом деле в тексте, я удалил символы, и он был исправлен. Но для этого я не могу идентифицировать любые «бродячие» символы, присутствующие в коде.
У меня нет идей, я могу попытаться преодолеть это, поэтому я прошу вас о помощи.
'cat -e program.c' – Eregrith
Я пробовал cat -vet program.c, и никаких странных символов не было, кроме^I, что означает tab и $, который указывает конец строки. –
С чем вы скомпилируете свою программу? – Eregrith