:C에서 불필요한 매개 변수 ++에 대한 자리 표시자를 사용하는 방법
이Function: void mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t a, const mpz_t b)
Set g to the greatest common divisor of a and b, and in addition set s and t to coefficients satisfying a*s + b*t = g. The value in g is always positive, even if one or both of a and b are negative (or zero if both inputs are zero). The values in s and t are chosen such that normally, abs(s) < abs(b)/(2 g) and abs(t) < abs(a)/(2 g), and these relations define s and t uniquely. There are a few exceptional cases:
If abs(a) = abs(b), then s = 0, t = sgn(b).
Otherwise, s = sgn(a) if b = 0 or abs(b) = 2 g, and t = sgn(b) if a = 0 or abs(a) = 2 g.
In all cases, s = 0 if and only if g = abs(b), i.e., if b divides a or a = b = 0.
If t is NULL then that value is not computed.
내가 'g'또는 't'의 값을 필요로하지 않고, 좋아하지 않을 이 함수에 전달하는 유일한 목적을위한 변수를 생성합니다. 이 특정 함수에 자리 표시 자와 같은 것을 전달하려면 무엇을 할 수 있습니까? 어떻게하면 C++에서 일반적으로이 작업을 수행 할 수 있습니까?
이렇게하면 작동하지 않습니다. 라이브러리 함수에 매개 변수가 필요한 경우 매개 변수를 지정해야합니다. 라이브러리 함수에 주어진 매개 변수가 선택적 일 수 있습니다. 그렇다면 라이브러리 함수 설명서에 해당 매개 변수에 대해 전달할 값을 설명 할 수 있습니다. 자세한 정보는 라이브러리 함수의. 서를 확인하십시오. –
물론이 사실은 입력 매개 변수에 대해 사실 인 것으로 알고 있지만 필요하지 않은 출력 매개 변수에는 임의의 값을 사용할 수 있다고 생각했습니다. 불행한 사람. 감사합니다. –
"t가 NULL이면 그 값은 계산되지 않습니다."그래서 적어도 하나는 답이 사소합니다. g 업데이트를 건너 뛰고 싶다면,'mpz_gcdext'의 코드를보고, 필요에 따라 mp'_gcdext'를 호출하면됩니다. 문서화되어 있지는 않지만 분명히 s = NULL을 함수에 전달할 수도 있습니다. g = NULL을 허용하는 GMP에 패치를 보낼 수 있습니다 ... –