错误:不允许系统调用:C中的SYS_socketcall

时间:2013-06-15 08:39:15

标签: c compiler-errors

我有一个在UART上接收8字节数据的函数,我正在使用其中一个数据字节,我读取该数据字节并调用一个函数来调制我将要访问的MP3编解码器的音量使用。 设置音量的MP3编解码器功能有点奇怪,它将声音设置为输入为0x00,即100%音量,如果它恰好是0x64则为0%。

现在,LabVIEW固件(由团队中的其他开发人员)设置,如果它想要将音量设置为100%,那么它将通过UART发送0x64和0x00为0%。我将要阅读的数据字节,如上所述。

避免这篇文章的复杂性,我试图做的是,实现一个简单的C代码,它将从控制台获取输入并打印处理后的输出。假如输入是0x00,那么输出应该是0x64,如果输入恰好是0x64,那么输出应该是0x00。 以下是我编写的代码,其中我收到的错误是:

Disallowed system call: SYS_socketcall

下面的代码可能看起来非常低效且非常基本,但这是为了理解。

int main(void)
{
   int input = 0x00, output = 0x00, i = 0x00, j = 0x64, var = 0x00;
   int in_arr[100], out_arr[100];

   for(i = 0x00; i < 0x65; i++, j--)
   { 
     out_arr[i] = j;
     in_arr[i] = i;
   }

   printf("Input : ");
   scanf("%x",&input);

   for(var = 0x00; var < 0x64; var++)
   {
     if(input == in_arr[var])
     {
       output = out_arr[var];
       printf("0x%x",output);
       break;
     }
   }
   return 0;
}

1 个答案:

答案 0 :(得分:0)

for(i = 0x00; i < 0x65; i++, j--)   // Should be i < 0x64

此处i0x65 => 101起最多可包含101个元素(0到100),但声明仅包含100个元素。

将其设为i < 0x64,它应该有效。

为避免此类混淆,最好将宏#define MAX_ELE 100设为MAX_ELE并在0x64的所有位置使用{{1}}。