这是一个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)
功能定义的注释:
功能定义:
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)
是的,它只是意味着在这种情况下成倍增加.它将两个#defined常数相乘以生成nvm_eeprom_write_byte函数的第一个参数.
这段代码涉及很多关于内存地址操作的假设.老实说,如果你不懂C,看看EEPROM驱动程序代码可能不是最简单或最安全的启动方式.