c中的*是什么意思

mil*_*lan 1 c

这是一个C语言问题.

*的意思是乘以或函数下面的其他东西吗?我问的原因是因为函数定义注释说它需要三个参数.也可以用()[括号] #defines表示不同于括号的东西吗?见下文.

函数调用:

nvm_eeprom_write_byte(TEST_ERASE_PAGE * EEPROM_PAGE_SIZE, 42);
Run Code Online (Sandbox Code Playgroud)

定义:

#define TEST_ERASE_PAGE 2
#define EEPROM_PAGE_SIZE 32
Run Code Online (Sandbox Code Playgroud)

功能定义的注释:

  • param page_addr EEPROM页面地址,介于0和EEPROM_SIZE/EEPROM_PAGE_SIZE之间.
  • param byte_addr EEPROM字节地址,介于0和EEPROM_PAGE_SIZE之间.
  • param value 写入EEPROM的字节值.

功能定义:

void nvm_eeprom_write_byte(eeprom_addr_t address, uint8_t value) {}
Run Code Online (Sandbox Code Playgroud)

eeprom_addr_t 是typedef:

typedef uint16_t eeprom_addr_t
#define EEPROM_START     (0x0000)
#define EEPROM_SIZE      (2048)
#define EEPROM_PAGE_SIZE (32)
#define EEPROM_END       (EEPROM_START + EEPROM_SIZE - 1)
Run Code Online (Sandbox Code Playgroud)

Ben*_*tto 5

是的,它只是意味着在这种情况下成倍增加.它将两个#defined常数相乘以生成nvm_eeprom_write_byte函数的第一个参数.

这段代码涉及很多关于内存地址操作的假设.老实说,如果你不懂C,看看EEPROM驱动程序代码可能不是最简单或最安全的启动方式.