الوصول إلى مؤشر وظيفة دون قوس
-
20-09-2019 - |
سؤال
لدي هذا الرمز:
#include <stdio.h>
int getAns(void);
int num;
int main()
{
int (*current_ans)(void);
current_ans = &getAns;
// HERE
printf("%d", current_ans());
}
int getAns()
{
return num + 3;
}
ومع ذلك، هل من الممكن أن يكون لديك شيء في // HERE
بقعة يسمح للسطر التالي printf("%d", current_ans);
الذي يصل إلى Getans () بطريقة دوار؟
المحلول
أظن أنك لا تستطيع ذلك ()
ضروري لإخبار المحول البرمجي أنها دعوة وظيفة. ومع ذلك، إذا كنت هل حقا تريد أن تفعل ذلك، يمكنك القيام به:
#define current_ans current_ans()
نصائح أخرى
على الرغم من أنني أتفق مع إجابة بيير، فإن
#define current_ans current_ans()
سوف تجعل الكود كثيرا غير قابل للقراءة
ماذا عن "#Define current_ans myroundaboutfnname ()"
لا ل current_ans
و current_ans()
هي أشياء مختلفة. بدون قوس، كلاهما current_ans
و getAns
هي مؤشرات وظيفة، بينما مع قوسين، فهي مكالمات وظيفة. إذا كنت تفكر في الأقواس نظرا لأن نطاق إلغاء تحديد المؤشر عن طريق تنفيذ التعليمات البرمجية، فإن ما تسأله هو علاج المؤشر ومحتويات المؤشر كواحد في نفسه.
لا تنتمي إلى StackOverflow