我是c的初学者。我声明2个变量并传递2个变量。所以,我不明白为什么会发生此错误。
另外,当我从错误行代码中删除“ 0b”时,

问候。这是我的主要代码和功能


  消息:错误[Pe165]:函数调用中的参数太少


void transmit(unsigned long data_word, unsigned char number_of_bits);
//i added this before i call the function


int main(void) {
  WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

  init();

  while (1) {
    if ((P2IN & BTN1) == 0) //when button pressed
    {
      unsigned int j;
      for (j = 0; j < 2; j++) {
        transmit(0b010000100100011, 15); // ERROR OCCURS IN HERE
        delay_ms(40);
      }
      while ((P2IN & BTN1) == 0);
    }
  }
}


// sending out bits, one by one, LSB first, maximum 16 bits (1 word)
void transmit(unsigned long data_word, unsigned char number_of_bits)
{
  unsigned char i;
  unsigned int mask;
  for (i = 0; i < number_of_bits; i++) {
    mask = (1 << i);
    if ((data_word & mask) == 0) // bit '0'
    {
      transmitBit0();
    } else // bit '1'
    {
      transmitBit1();
    }
  }
}

最佳答案

C没有二进制文字。 0b...不是有效的C。某些编译器将其作为扩展支持,而其他编译器则不支持。

使用十六进制表示法。

关于c - 虽然我声明了2个变量并传递了2个变量,但函数调用错误中的参数太少,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55442359/

10-11 04:26