定义值不能在函数中改变
define value couldnt change in function
我想更改 TORQUE_HWORD 和 TORQUE_LWORD 调用函数时的全局定义 如果我调用了。我该怎么做?
我正在这样尝试:
uint16_t mAddressArray[10];
#define TORQUE_HWORD mAddressArray[5]
#define TORQUE_LWORD mAddressArray[6]
void changeValue()
{
Write_EEPROM_Define(torque, TORQUE_HWORD, TORQUE_LWORD); // Current Limit
printf("A: %04x B: %04x ", TORQUE_HWORD, TORQUE_LWORD); // I see this value 0000 0000
}
void Write_EEPROM_Define( float value, uint16_t eepromHValue, uint16_t eepromLValue)
{
eepromHValue = 0xAA;
eepromLValue = 0XBB;
}
这里的主要问题是您按值传递数组项,因此您不会更改原始数组。而这个问题是由于在访问数组时使用了误导性的宏造成的。
其他问题是void changeValue()
是过时的样式,应该是void changeValue (void)
。并且函数 Write_EEPROM_Define
命名错误,我希望这样的函数能够执行对 EEPROM 的实际写入。
所有这些问题都可以这样解决:
uint16_t mAddressArray[10];
#define TORQUE_HWORD_INDEX 5
#define TORQUE_LWORD_INDEX 6
void changeTorque (float value, uint16_t array[10], uint16_t hi_index, uint16_t lo_index)
{
array[hi_index] = 0xAA;
array[lo_index] = 0xBB;
}
void changeValue (void)
{
changeTorque(torque, mAddressArray, TORQUE_HWORD_INDEX, TORQUE_LWORD_INDEX);
printf("A: %04x B: %04x ", mAddressArray[TORQUE_HWORD_INDEX], mAddressArray[TORQUE_HWORD_INDEX]);
}
至于为什么你把这个数组作为一个全局变量,却在同一个文件中的函数之间传递它,我不知道。这只是奇怪的程序设计,您或许应该将其设为某个函数中的局部 static
变量。
我想更改 TORQUE_HWORD 和 TORQUE_LWORD 调用函数时的全局定义 如果我调用了。我该怎么做?
我正在这样尝试:
uint16_t mAddressArray[10];
#define TORQUE_HWORD mAddressArray[5]
#define TORQUE_LWORD mAddressArray[6]
void changeValue()
{
Write_EEPROM_Define(torque, TORQUE_HWORD, TORQUE_LWORD); // Current Limit
printf("A: %04x B: %04x ", TORQUE_HWORD, TORQUE_LWORD); // I see this value 0000 0000
}
void Write_EEPROM_Define( float value, uint16_t eepromHValue, uint16_t eepromLValue)
{
eepromHValue = 0xAA;
eepromLValue = 0XBB;
}
这里的主要问题是您按值传递数组项,因此您不会更改原始数组。而这个问题是由于在访问数组时使用了误导性的宏造成的。
其他问题是void changeValue()
是过时的样式,应该是void changeValue (void)
。并且函数 Write_EEPROM_Define
命名错误,我希望这样的函数能够执行对 EEPROM 的实际写入。
所有这些问题都可以这样解决:
uint16_t mAddressArray[10];
#define TORQUE_HWORD_INDEX 5
#define TORQUE_LWORD_INDEX 6
void changeTorque (float value, uint16_t array[10], uint16_t hi_index, uint16_t lo_index)
{
array[hi_index] = 0xAA;
array[lo_index] = 0xBB;
}
void changeValue (void)
{
changeTorque(torque, mAddressArray, TORQUE_HWORD_INDEX, TORQUE_LWORD_INDEX);
printf("A: %04x B: %04x ", mAddressArray[TORQUE_HWORD_INDEX], mAddressArray[TORQUE_HWORD_INDEX]);
}
至于为什么你把这个数组作为一个全局变量,却在同一个文件中的函数之间传递它,我不知道。这只是奇怪的程序设计,您或许应该将其设为某个函数中的局部 static
变量。