עבור לתוכן

הרצת פונקציה באמצעות מצביע

Featured Replies

פורסם

שמרתי כתובת לפונקציה במצביע מסוג *void.

איך אני יכול לקרוא (להפעיל) לפונקציה באמצעות המצביע בשפת C?

פורסם

פשוט מאוד, אם למשתנה קוראים a אז תפעיל

a(the vars according to the prototype);

(יישור לשמאל).

השאלה גם נשאלה בעבר ונענתה, נסה לחפש.

פורסם
  • מחבר

void my_function( void )
{
printf( "Hello World!\n" );
}

void main( void )
{
void *ptr = &my_function;
void *func = ptr;

func();
}

אני מקבל הודעת שגיאה:

'func' : not a function

פורסם
  • מחבר

זה לא עובד.

אם אני מגדיר את func כך:

void *func();

אז אני מקבל הודעת שגיאה על ההשמה ל-func:

'=' : left operand must be l-value

פורסם

יעזור לראות את הקוד במקום..

פורסם
  • מחבר

הצלחתי! :yelclap:

void (*func)() = NULL;
func = &my_func;
func();
printf( "Func = %d\n", func );

לגבי הקוד מקור של הבעיה, אני יכול לשלוח לך אותו באימייל (תשלח לי בפרטי). הכל עובר קומפילציה ורץ, אבל לא קורה כלום.

פורסם

אני מניח שזה קשור לזה שאתה לא עוקב אחרי ההנחיות...

פורסם
  • מחבר

<return value> (*<function_holder_name>)(<arguments>);

היה חסר לי סוגריים. הפעם האחרונה שהתעסקתי עם מצביעים לפונקציות היתה לפני הרבה זמן. :-\

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים