ايران ويج

نسخه‌ی کامل: TRY-CATCH-AVR GCC
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام این دستور
TRY - CATCH توی AVR GCC چی کار میکنه؟
کاربردی که توی برنامه نویسی کامپیوتر داره رو داره یا نه چیز دیگه ای هست؟Exclamation
باز هم خودم جواب خودم رو بدمBiggrin
--
بله این TRY - CATCH این بازی ها مال c++ هست و خوب برای میکرو هم کامپایلر c++ وجود داره
ولی اینکه چرا وقتی برنامه c مینویسیم این هارو هم میاره برمیگرده به مشکل اون برنامه ای که تکمیل کد رو برای ما انجام میده وگرنه توی C هیچ کاربردی ندارهBiggrin
یه سوالم من داشتم... مرتبط نبود انتقال بدین به چت باکس علمی لطفا Biggrin

چند وقت پیش برنامه ای نوشته بودم..(برا میکرو)

یه آرایه 4 تایی تعریف شده بود

ولی حین اجرای برنامه اشتباهی ایندکس 5 ام رو میخوندم...

برنامه هم کار میکرد!!
یعنی دستور هایی بعدش رو هم اجرا میکرد...

اما مقدار متغیر کلا وجود نداشت...
حتی با دیباگر هم نگاه کردم، جلوش هیچی نمی نوشت...(مقدار نداشت)

اینجور شرایط رو چطوری میشه کنترل کرد؟( زبون C )

+

تا حالا کسی با ++C برای میکرو برنامه نوشته؟ میشه؟ نمیشه؟ چطوریه؟
توی پروژه های سنگین، C اذیت میکنه... مخصوصا بابت متغیر های global و ...
بیانیه: از این تاریخ به سوالات بیش از نیم خط پاسخی داده نخواهد شدBiggrin

(۰۴-مهر-۱۳۹۲, ۰۰:۵۷:۲۳)salehjg نوشته است: [ -> ]چند وقت پیش برنامه ای نوشته بودم..(برا میکرو)
یه آرایه 4 تایی تعریف شده بود
ولی حین اجرای برنامه اشتباهی ایندکس 5 ام رو میخوندم...
برنامه هم کار میکرد!!
یعنی دستور هایی بعدش رو هم اجرا میکرد...
اما مقدار متغیر کلا وجود نداشت...
حتی با دیباگر هم نگاه کردم، جلوش هیچی نمی نوشت...(مقدار نداشت)
اینجور شرایط رو چطوری میشه کنترل کرد؟( زبون C )
این چیز رو با این کچ و اینا نمیشه کنترل کرد (تاجایی که من می دونم)
دستی باید کنترل کنید.
دلیل اینکه برنامه کار می کرد اینه که این آرایه ها فقط یه اشاره گر هستن
یعنی اگه شما یه ایندکس اشتباه بدی درنهایت یه نقطه اشتباه رو هم میخونی و مشکل اون موقعی ایجاد میشه که جای اشتباه رو هم بنویسیBiggrin
نقل قول: تا حالا کسی با ++C برای میکرو برنامه نوشته؟ میشه؟ نمیشه؟ چطوریه؟
بله توی همون اتمل استادیو میشه نوشت
مشکلی هم نداره
ولی یکسری از قابلیت ها کار نمی کنن مثلا ایجاد یک شی از یک کلاس (همش همون اول کار ایجاد میشن)
ولی شدیدا توصیه شده که اگه واقعا نیازی به قابلیت های خاص C++ ندارید ازش استفاده نکنید.
نقل قول: توی پروژه های سنگین، C اذیت میکنه... مخصوصا بابت متغیر های global و ...
چه اذیتی می کنه؟ بگو بزنیم تو سرش آدم بشهBiggrin
اگه برنامه رو خوب و تمیز بنویسید مشکلی پیش نمی یاد معمولا سوتی های برنامه نویس هست که پروژه های بزرگ رو با مشکل رو برو می کنه ولی درکل اگه مشکل از کامپایلر باشه C++ چیز خاصی رو فکر نکنم دوا کنه.
نقل قول: دلیل اینکه برنامه کار می کرد اینه که این آرایه ها فقط یه اشاره گر هستن
یعنی اگه شما یه ایندکس اشتباه بدی درنهایت یه نقطه اشتباه رو هم میخونی و مشکل اون موقعی ایجاد میشه که جای اشتباه رو هم بنویسیBiggrin
مشابه این حالت هم یه بار برام رخ داد
یه متغیر static داخل تابعی داشتم...
مقدار دهی میشد
ولی بعد فراخوانی دوباره، متغیر مقداری نداشت!!!

که بعدا با گذاشتن یه خازن 4700 میکرو فاراد حل شد Biggrin Biggrin

نقل قول: بله توی همون اتمل استادیو میشه نوشت
مشکلی هم نداره
ولی یکسری از قابلیت ها کار نمی کنن مثلا ایجاد یک شی از یک کلاس (همش همون اول کار ایجاد میشن)
ولی شدیدا توصیه شده که اگه واقعا نیازی به قابلیت های خاص C++ ندارید ازش استفاده نکنید.
Amaze
Sad
نقل قول: چه اذیتی می کنه؟ بگو بزنیم تو سرش آدم بشهBiggrin
اگه برنامه رو خوب و تمیز بنویسید مشکلی پیش نمی یاد معمولا سوتی های برنامه نویس هست که پروژه های بزرگ رو با مشکل رو برو می کنه ولی درکل اگه مشکل از کامپایلر باشه C++ چیز خاصی رو فکر نکنم دوا کنه.
برنامه های سنگین متغیر های سراسری رو چطوری تعریف میکنن؟
من معمولا توی یه فایل جدای C تغریف میکنم، بعد داخل یه هدر فایل با extern پروتو تایپ اون متغیر ها رو می نویسم و احیانا اگر نیاز بود، مقدار دهی اولیه میکنم.. ....
منظورمو رسوندم؟
اگه نه مثال بزنم...

با این کار هر کجای توابعی که توی c.* های مجزا تعریف شدن، به اون متغیر ها نیاز داشتم، ازشون استفاده میکنم...
مشکلی که هست اینکه sram بطور نجومی مصرف میشه :)

راه بهتری هم هست؟
(با اشاره گر ها نمیشه هی آدرس به توابع فرستاد، اوضاع خیلی ناجور میشه)
(۰۴-مهر-۱۳۹۲, ۰۱:۲۰:۰۳)salehjg نوشته است: [ -> ]برنامه های سنگین متغیر های سراسری رو چطوری تعریف میکنن؟
من معمولا توی یه فایل جدای C تغریف میکنم، بعد داخل یه هدر فایل با extern پروتو تایپ اون متغیر ها رو می نویسم و احیانا اگر نیاز بود، مقدار دهی اولیه میکنم.. ....
منظورمو رسوندم؟
اگه نه مثال بزنم...

با این کار هر کجای توابعی که توی c.* های مجزا تعریف شدن، به اون متغیر ها نیاز داشتم، ازشون استفاده میکنم...
مشکلی که هست اینکه sram بطور نجومی مصرف میشه :)

راه بهتری هم هست؟
(با اشاره گر ها نمیشه هی آدرس به توابع فرستاد، اوضاع خیلی ناجور میشه)
Amaze
Sad
Biggrin
---
خوب اگه واقعا قراره توی همه ی توابع استفاده بشن
خب دیگه میکرو هم محدودیت هایی داره دیگه معجزه که دیگه نمی شه کرد باید یه میکرو ی دیگه خریدBiggrin