سؤال

وأنا أحاول أن تعيين قيمة غير صالحة ل-1 .. ولكن أنا لا أحب الأرقام السحرية .. أي شخص يعرف مكان العثور على مجموعة من الثوابت المشتركة. أنا أعمل في VS6 (إيش).

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

وهاربر شيلبي ضرب المسمار على رأسه .. فقط القليل من الإبهام. وأشار إلى الثوابت Win32 و.. وهذا بالضبط ما كنت أفكر .. الآن لإيجاد الرابط:)

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

المحلول

#define BAD_VALUE -1

وتحرير: كان السؤال الأصلي لا يوجد سياق. السؤال المنقحة تشير كنت تريد حجم ملف غير صالح، وبالتالي فهي تبحث عن الثوابت Win32 و. انظروا WINDOWS.H أعتقد ثابت كنت تسعى قد تكون في <أ href = ل "http://en.wikipedia.org/wiki/Windows.h" يختلط = "نوفولو noreferrer"> WINDOWS.H أو أحد بنوده الفرعية تشمل. وتشمل البقرى ويندوز الخاص بك الدليل؛ -)

نصائح أخرى

إذا -1 هي قيمة غير صالحة لقيمة إرجاع في النظام الخاص بك، يجب أن تحدد داخليا:

const int INVALID_FOO = -1

وإلا هناك حاجة إلى التوافق C، وفي هذه الحالة

#define INVALID_FOO -1

وسيكون من المفضل. إذا كان مورد MFC أو ويندوز القياسية، واستخدام INVALID_HANDLE أو أحد الثوابت أخرى محددة إلى Win32.

وتحتاج إلى استخدام الرقم السحري الخاص -1 متنكرا في زي ثابت ويندوز. هذا أمر مضلل للغاية.

لنفترض أنني أعلم أن INVALID_HANDLE هو 0. هل هو موافق لتهيئة مؤشرات بلدي مع INVALID_HANDLE؟

char *myMessage = INVALID_HANDLE;

وكيف هذا الإضراب لك؟

في VS، إنشاء النوافذ مشروع تطبيق وحدة تحكم جديد. الذهاب إلى إعدادات المشروع وتشغيل دعم الاستعراض. إنشاء ملف C ++ وإضافته إلى المشروع. النوع:

#include <windows.h>
void main(void) {}

في الملف. ترجمة عليه. الآن اكتب INVALID_FILE_SIZE في الملف. انقر على الحق في ذلك وتعريف غوتو من INVALID_FILE_SIZE. سوف VS فتح واحد من العديد من النوافذ رأس الملفات كاملة من القيم المحددة. التمتع بها.

وأول شيء هو أنك يجب أن تستخدم عدد صحيح بدون إشارة لحجم الملف كملف حجم الملف هو سلبي أبدا. الآن حجم ملف غير صالح هو عادة أقصى كثافة العمليات حتى في حالة استخدام غير موقعة 32 بت عدد صحيح أنه سيكون 0xFFFFFFFF

وأي بمعنى.

const unsigned int INVALID_FILESIZE = 0xFFFFFFFF;

وأيضا إذا كان هذا هو على النوافذ، WINDOWS.H يعرف غير صالحة حجم الملف جميعا على استعداد (INVALID_FILE_SIZE)

إذا كنت تريد استخدام الثوابت التي يستخدمها WINAPI، تحقق من الملفات WinError.h، WinUser.h وWINNT.H.

وانها المقبولة عموما و0 و 1 (الإيجابية والسلبية) هي موافق على استخدام مباشرة.

في الواقع، انها سوف تجعل من المحتمل أن رمز أكثر مربكة استخدام متغير بدلا من ذلك.

تحديث: OK، لكم تحديث سؤالك بعد ان كتبت جوابي. إذا كنت تستخدم "-1" بطريقة حسابية، ثم عادل "-1" على ما يرام. إذا كنت ستعود رمز الخطأ (ورمز يحدث لمجرد أن يكون -1) ثم يجب عليك استخدام CONST.

 const int INVALID_VALUE = -1;
If bytes_read < 0
    // error
EndIf
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top