У меня странный. Я работаю над встроенной системой, используя файлы заголовков поставщиков. Я компилирую файлы с помощью GCC 4.6.3. Я хочу использовать C ++ для своего кода, у меня ошибка, которую я не могу понять. Я запускаю программу-пример поставщика, и все, что я сделал, это изменил имя файла main.c на main.cpp. В результате, я полагаю, файлы заголовков интерпретируются компилятором C ++. Одна из них содержит следующие строки:
__attribute__((naked)) static return_type signature \
{ \
__asm( \
"svc %0\n" \
"bx r14" : : "I" (number) : "r0" \
); \
}
Файлы компилируются правильно, если имя файла main.c, я предполагаю, что это связано с тем, что файл обрабатывается компилятором C. Если я использую C ++, я получаю следующее сообщение:
error: impossible constraint in 'asm'
Но опять же, у меня нет проблем с компилятором C. Мне нужно вызвать функции, которые используют это определение в файлах C ++. Я подумал о написании функций-оберток, которые остаются на стороне c и связываются с ними, но это было бы настоящей болью и менее эффективным. Какие-либо предложения?
extern "C"
его? - person Jesus Ramos   schedule 30.03.2013svc
инструкции. - person artless noise   schedule 07.02.2016