C تم تخطي وظيفة C في وقت التشغيل
سؤال
لدي رمز C التالي في البرنامج:
printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
printf("Test after print_foo()");
حيث تم تمرير print_foo printf في مجموعة الأحرف ثنائية الأبعاد مع ملفات .c و .h المناسبة.
إخراج وحدة التحكم هو فقط بيان printf. تصحيح الأخطاء ، وقت التشغيل لا يخطو أبدًا إلى print_foo.
أيه أفكار؟
المحلول
void print_foo(char board[ROW][COL]);
ليست مكالمة وظيفة. إنه إعلان.
ربما تريد
print_foo(board);
نصائح أخرى
الذي - التي void
البادئة تجعل الخط الأوسط في إعلان الوظيفة print_foo
(و ال char
ضمن الأقواس يعني أنه سيكون بناء جملة غير صالح خلاف ذلك). لمجرد يتصل print_foo
, ، تغيير الخط الأوسط إلى print_foo(board);
(لو board
هي الطريقة التي سميت بها مجموعة الأحرف ثنائية الأبعاد).
هذا يبدو وكأنه إعلان الوظيفة بالنسبة لي - لهذا السبب لا يتم استدعاء وظيفة FOO الخاصة بك.
الخط الأوسط الخاص بك هو مجرد إعلان وظيفة ، وليس مكالمة وظيفة.
إذا لم تعلن النموذج الأولي سابقًا ، فعليك كتابة هذا:
printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
print_foo(board);
printf("Test after print_foo()");
باختصار ، عليك تحديد/إعلان print_foo قبل التذرع ، أو أن المترجم الخاص بك سيشير إلى خطأ !!