سؤال

لدي رمز 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 قبل التذرع ، أو أن المترجم الخاص بك سيشير إلى خطأ !!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top