c
1#include <stdio.h> 2 3#define gcd(n1, n2) (n1 > n2 ? gcdf(n1, n2) : gcdf(n2, n1)) 4 5#define gcdf(x, y) (y == 0 ? x : gcdf(y, x % y)) // エラーの元 6 7/*int gcdf(int x, int y) 8{ 9 return y == 0 ? x : gcdf(y, x % y); 10}*/ 11 12int main(void) 13{ 14 int n1, n2; 15 16 puts("二つの整数を入力してください:"); 17 printf("整数1:"); scanf("%d", &n1); 18 printf("整数2:"); scanf("%d", &n2); 19 20 printf("最大公約数は%dです。\n", gcd(n1, n2)); 21 22 return 0; 23}
このようなコードで実行すると、
implicit declaration of function 'gcdf' is invalid
のようなエラーが出ます。
コメントアウトした部分を元に戻して、エラーの元をコメントアウトすると正しく結果が得られます。
関数マクロの中では再帰関数のような呼び出しができないということでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/01 18:22