fileno، F_LOCK وF_ULOCK تصبح غير معلنة وغير متوفرة عندما أضيف الأمراض المنقولة جنسيا = C99 العلم لدول مجلس التعاون الخليجي
سؤال
ولدي هذه الرؤوس في مدونة ج
#include <stdio.h>
#include <unistd.h>
كل شيء جمعت غرامة حتى أضفت -std = C99 العلم لقيادة دول مجلس التعاون الخليجي (لتمكين تقييد و>). وهذا تسبب في تسجيل الأخطاء التالية:
<اقتباس فقرة> تحذير: إعلان ضمني
وظيفة fileno
والخطأ: F_LOCK
غير معلن (أول استخدام
في هذه الوظيفة)
خطأ: (كل المعرف غير معروفة هو
ذكرت مرة واحدة فقط الخطأ:
لكل وظيفة يظهر في.)
خطأ: F_ULOCK
غير معلن (أول استخدام
في هذه الوظيفة
وأي أفكار إلى حل هذه الأخطاء / التحذيرات؟
المحلول
وتحتاج إلى معرفة الرؤوس التي تريد ملحقات POSIX. في هذه الأيام، وأنا استخدم:
#if __STDC_VERSION__ >= 199901L
#define _XOPEN_SOURCE 600
#else
#define _XOPEN_SOURCE 500
#endif /* __STDC_VERSION__ */
إذا أنا ترجمة مع -std=c89
، وأنه يعطي نسخة POSIX الصحيح. إذا كنت ترجمة مع -std=c89
، وأنه يعطي نسخة POSIX الصحيح. أنا استخدم هذا على سولاريس 9 و 10، وماك X (10.4.x، 10.5.x)، HP-UX 11.X، لينكس (RHEL4 و5، سوزي 9 و 10) وAIX 5.x و 6.X - AFAICR دون مشاكل حتى الآن.
ويجب أن يظهر هذا المقطع الشعري قبل أن يتم تضمين أي رؤوس النظام (في رأس الخاص بك، أو في كل ملف المصدر)، أو تحتاج إلى تحقيق نفس التأثير مع -D_XOPEN_SOURCE=600
على سطر الأوامر المترجم، أو أي آلية أخرى مماثلة.
نصائح أخرى
وحاول
-std=gnu99
ولتمكين جميع ملحقات والاستمرار في استخدام تحسينات اللغة C99.
وكنت قد تحاول -D_BSD_SOURCE لتمكين BSD-المذهبين أو -D_SVID_SOURCE لتمكين المذهبين النظام-V