Какие шаги я могу предпринять, чтобы удалить ошибку в моем коде? - PullRequest
0 голосов
/ 16 марта 2012

Я пишу код в шаблоне драйвера I / O Kit следующим образом:

#include <IOKit/IOService.h>
class com_osxkernel_driver_IOKitTest : public IOService
{
  OSDeclareDefaultStructors(com_osxkernel_driver_IOKitTest)
   public:
        virtual bool    init (OSDictionary* dictionary = NULL);
        virtual void    free (void);
        virtual IOService*      probe (IOService* provider, SInt32* score);
        virtual bool    start (IOService* provider);
        virtual void    stop (IOService* provider);
}; 
#include "IOKitTest.h"
#include <IOKit/IOLib.h>
#define super IOService
OSDefineMetaClassAndStructors(com_osxkernel_driver_IOKitTest, IOService)
bool com_osxkernel_driver_IOKitTest::init (OSDictionary* dict)
{
    bool res = super::init(dict);
    IOLog("IOKitTest::init\n");
    return res;
}
void com_osxkernel_driver_IOKitTest::free(void)
{
    IOLog("IOKitTest::free\n");
    super::free();
} 
IOService* com_osxkernel_driver_IOKitTest::probe (IOService* provider, SInt32* score)
{
    IOService *res = super::probe(provider, score);
    IOLog("IOKitTest::probe\n");
    return res;
}
bool com_osxkernel_driver_IOKitTest::start (IOService *provider)
{
     bool res = super::start(provider);
     IOLog("IOKitTest::start\n");
     return res;
}
void com_osxkernel_driver_IOKitTest::stop (IOService *provider)
{ 
    IOLog("IOKitTest::stop\n");
    super::stop(provider);
}

При создании этого кода я получаю четыре ошибки:

  1. Ожидаемая функциятело после объявления функции
  2. stray '\357' in program
  3. stray '\277' in program
  4. stray '\274' in program

Вы видите ошибку?

Ответы [ 2 ]

10 голосов
/ 16 марта 2012

Вы видите ошибку?

Нет.Но может компилятор.И Xcode покажет вам это.

Я вставил ваш код в новый проект и скомпилировал его:

enter image description here

Все три случайных символа находятся в одном и том жечасть кода.
Если возникает такая ошибка stray '\something', в вашем коде есть символ, который невозможно скомпилировать, и вы обычно его не видите.Они часто приходят из копии и вставки, которые пошли не так.

Просто удалите строку с ошибкой и напишите ее снова.Не копируйте и не вставляйте что-либо еще.

Я взял эту часть кода и открыл ее в шестнадцатеричном редакторе.Таким образом, вы можете увидеть, откуда эти ошибки.

enter image description here

0 голосов
/ 12 июня 2013

Для всех, кто использует KATE (KDE Advanced Text Editor), я смог исправить подобные «случайные ошибки», открыв файлы, вызывающие ошибку, и сняв флажок «Добавить метку порядка байтов (BOM)», который можно найти под меню инструментов. Файл не будет изменен после того, как вы снимите флажок с этого параметра, поэтому вам нужно будет сохранить (Ctrl + S) файл. Когда вы перекомпилируете, ошибка исчезнет.

...