سلام مهندس.منکه } رو گذاشتم نمیدونم چرا هی ارور میده.مشکلش کجاست بنظرتون؟
حل شده
بررسی علت بروز پیغام خطای espected در نرم افزار CodeVision
سلام مهندس.منکه } رو گذاشتم نمیدونم چرا هی ارور میده.مشکلش کجاست بنظرتون؟
پاسخ منتخب
سلام، سعی کنید انقدر کدها رو پاک کنید تا دیگه ارور نداشته باشید. بعد تکه تکه اضافه کنید کدها رو تا مشکل پیدا بشه. اولین تکه ای که باعث مشکل شد رو بررسی کنید. اگر موفق نشدید، اون اولین تکه رو مجدد اینجا برای من بفرستید.
پاسخها (۱۳)
مهارتجومحمد افتخاری· ۶ سال پیش
همین تکه هست مهندس.7 تا کاراکتر 7 تایی از نوع flash byte تعریف کردم.هرکدوم که میمونه همین ارور میده.فرقی نداره کاراکتر اول باشه یا دومی یا …
استادمهراد معین· ۶ سال پیشمیشه فایل .c پروژه رو ارسال کنید اینجا؟
استادمهراد معین· ۶ سال پیشدو تا مشکل در اون قسمت از فایل وجود داره.
۱. شما آرایه ۷ خونه ای تعریف کردید ولی داخلش ۸ تا المان قرار دادید. اون عدد داخل براکت هنگام تعریف آرایه، تعداد المان ها هست و به معنی از ۰ تا اون عدد نیست.
۲. شما از نوع داده byte استفاده کردید که باید برای کامپایلر تعریفش کنید. به صورت دیفالت این رو نمی فهمه. (البته کامپایلر ها با هم فرق دارن و در بعضی ها byte رو میفهمه. ولی در نسخه کدویژنی که من دارم byte رو باید براش تعریف کنید.)
اگر خاطرتون باشه، همین مشکل رو در هنگام استفاده از uint8_t داشتیم که بعضی کامپایلر ها اون رو نمی فهمن و باید توسط فایل .h اون تعاریف رو include میکردیم.
استادمهراد معین· ۶ سال پیشپیشنهاد می کنم برای یک بایت از نوع داده uint8_t استفاده کنید و برای استفاده از این نوع داده باید فایل زیر رو به پروژه اضافه کنید:
#includeمهارتجومحمد افتخاری· ۶ سال پیش
یعنی بنویسم
flash uint8_t char0مهارتجومحمد افتخاری· ۶ سال پیش
عالی بود مهندس کاملا درست شد.
اول عدد رو8 کردم ولی بازم ایراد داشت.
uint8_t کار رو دراورد.مرسی مهندس.
برای شناسوندن byte باید چکرد؟
استادمهراد معین· ۶ سال پیشدو روش وجود داره برای اینکار:
۱. استفاده از define:
#define byte uint8_t
۲. استفاده از typedef:
typedef uint8_t byte;مهارتجومحمد افتخاری· ۶ سال پیش
روش اول رو فهمیدم.روش دوم {} دیگه نمیخاد؟یادمه مثلا { … } typdef struct بعد یه نوع متغییر از نوع استراکت میساختیم.
الان typedef uint8_t byte میاد یه byte از نوع uint8_t میسازه؟مقداری دیگه نباید بهش بدیم؟
و مهندس راهی نداره با اضافه کردن کتابخانه یا تنظیمات کامپایلر یا IDE اینکارو کرد؟
استادمهراد معین· ۶ سال پیشروش دوم احتیاج به چیز دیگه نداره. همینطوری کار میکنه. typedef کارش این هست که یک اسم رو به یک نوع داده (که می تونه struct هم باشه حتی) نسبت میده.
درواقع این خط، به کامپایلر میگه که یک نوع داده به اسم byte داریم که همون uint8_t هست. این خط رو بعد از include ها بذارید.
در مورد اینکه با اضافه کردن کتابخانه یا تنظیمات IDE بشه اینکار رو کرد: من داخل تنظیمات همچین چیزی ندیدم. شاید باشه. کتابخانه هم لازم نداره واقعا. کار خیلی خیلی ساده ای هست. چیزی به اسم byte وجود نداره برای خیلی از IDE ها و شما باید با یکی از دو روشی که گفتم (خیلی ساده و در یک خط) به کامپایلر بفهمونید که منظورتون از byte چی هست.
استادمهراد معین· ۶ سال پیشیک نکته دیگه هم اینکه نوع داده byte در زبان c خیلی محبوب نیست و معمولا از char یا unsigned char و یا از نظر من بهتر از اینها int8_t و uint8_t استفاده میشه.مهارتجومحمد افتخاری· ۶ سال پیش
مرسی مهندس جان.عالی بود.
پاسخ شما
برای پاسخ دادن به این سوال وارد شوید.


