2
나는 여러개의 라벨이 붙은 서보가 있으며, 각각은 자체적으로 보정 된 최소, 중간 및 최대 펄스 폭 값을 가지고있다.C++ 매크로 인수 (토큰 연결)?
// repository of calibrated servo pulse width values:
#define SERVO_0x01_MIN 165
#define SERVO_0x01_MID 347
#define SERVO_0x01_MAX 550
#define SERVO_0x02_MIN 165
#define SERVO_0x02_MID 347
#define SERVO_0x02_MAX 550
...
코드의 유지 관리를 단순화하기 위해 서보를 교체하려면 단일 매크로 정의 값을 변경해야합니다.
// maps certain positions on robot to the servo that is installed there
#define JOINT_0 0x02
#define JOINT_1 0x05
#define JOINT_2 0x0A
...
// function-like macros to resolve values from mapping
#define GET_MIN(servo) SERVO_##servo##_MIN
#define GET_MID(servo) SERVO_##servo##_MID
#define GET_MAX(servo) SERVO_##servo##_MAX
난 데 문제는 그 자체가 단말기 값으로 해결되지 않는 매크로입니다 인수로 함수와 같은 매크로를 호출 : 내가하기 위해 할 수있는 일
// main
int main(void) {
// this works
int max_0x01 = GET_MAX(0x01); // int max_0x01 = 550;
// this doesn't
int max_joint_0 = GET_MAX(JOINT_0); // int max_joint_0 = SERVO_JOINT_0_MAX;
}
가 GET_MAX(JOINT_0)
은 550
으로 바뀝니 까?
와우와
로 확대 그리고 마지막으로 교체됩니다! 감사합니다 - 왜 이것이 작동하는지 간단한 설명을 추가해 주시겠습니까? –