كيف يمكنني typedef ومؤشر دالة التي تأخذ وظيفة من نوع خاص به كحجة؟

StackOverflow https://stackoverflow.com/questions/816356

  •  03-07-2019
  •  | 
  •  

سؤال

مثال: دالة التي تأخذ وظيفة (وهذا يأخذ وظيفة (وهذا ...) وعدد صحيح)، وكثافة العمليات

.
typedef void(*Func)(void (*)(void (*)(...), int), int);

وان ينفجر بشكل متكرر حيث (...). هل هناك سبب أساسي هذا لا يمكن القيام به أو أن هناك جملة أخرى؟ يبدو لي أنه ينبغي أن يكون ممكنا من دون صوت. أنا في الحقيقة محاولة لتمرير جدول إيفاد ولكن يمكنني أن هذا الرقم إذا كان بإمكاني فقط تمرير هذا نوع واحد.

هل كانت مفيدة؟

المحلول

ويمكنك لف مؤشر الدالة في البنية:

struct fnptr_struct;
typedef void (*fnptr)(struct fnptr_struct *);
struct fnptr_struct {
  fnptr fp;
};

ولست متأكدا إذا كان هذا يعد تحسنا عن الصب. وأظن أنه من المستحيل دون بنية لC يتطلب أنواع ان تعرف قبل استخدامها وليس هناك جملة مبهمة لtypedef و.

نصائح أخرى

ومن المستحيل أن تفعل مباشرة. الخيارات الوحيدة هي لجعل حجة وظيفة مؤشر تقبل حجج غير محددة، أو لتقبل مؤشر إلى بنية تحتوي على مؤشر الدالة، ك <لأ href = "https://stackoverflow.com/questions/816356/how-can-i -typdef واحد في وظيفة المؤشر بين أن يأخذ واحد في وظيفة من والخمسين الإلكتروني الخاص من نوع كما هو وسيلة ل/ 816386 # 816386 "> ديف اقترح .

// Define fnptr as a pointer to a function returning void, and which takes one
// argument of type 'pointer to a function returning void and taking
// an unspecified number of parameters of unspecified types'
typedef void (*fnptr)(void (*)());
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top