C6507
تحذير C6507: تعارض التعليق التوضيحي: فارغة للخاصية في Deref = 0 تشغيل ينشر شرط يجب أن يكون مجموعة فرعية من خاصية خالية (Null) precondition
هذا التحذير يشير إلى تعارض أي قيم للخاصية خالية (Null) التي تم استخدامها في شروط Pre-و ينشر-في الافتراضي عدم مرجعية المستوى 0. في هذه الحالة يكون الشرط ما قبل تعيين قيمة خالية Null = لا، و ينشر تحدد شرط خالية (Null) = نعم. لأن معلمة هو غير التي تم تمريرها حسب المرجع ولا يمكن تغييره؛ ولذلك، لا يمكن للشرط بعد استخدام خالية (Null) = نعم.
مثال
يلي تعليمات برمجية ينشئ هذا التحذير لأن Deref = 0 ينطبق على المؤشر والمؤشر على حرف غير:
// C
#include <CodeAnalysis\SourceAnnotations.h>
void f ([SA_Pre(Null=SA_No)] [SA_Post(Null=SA_Yes)] char *pc);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f([Pre(Null=No)] [Post(Null=Yes)] char *pc);
لتصحيح هذا التحذير، قم بتعديل السمة ما قبل أو استخدام مزدوجة indirection إذا كنت ترغب في تغيير المؤشر يشير إلى حرف/ حروف، كـ في التعليمة البرمجية التالية:
// C
#include <CodeAnalysis\SourceAnnotations.h>
void f1 ([SA_Pre(Null=SA_Maybe)] [SA_Post(Null=SA_Yes)] char *pc);
// or
void f2 ([SA_Pre(Deref=1, Null=SA_No)] [SA_Post(Null=SA_Yes)] char **pc);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f1([Pre(Null=Maybe)] [Post(Null=Yes)] char *pc);
// or
void f2 ([Pre(Deref=1, Null=No)] [Post(Null=Yes)] char **pc);
هو صالحة لتحديد ما قبل (Null (خالية) = قد يكون) والنشر (Null (خالية) = لا). Th هو هو مفيدة للوظائف التي قد يقوم بطرح استثناء إذا كان المؤشر هو فارغة: