این کدی که دارم میزنم برا میکرو کنترلر هستش، کدهام به صورت زیر هستش :
بله حدس زدم! به این علت که معمولا برنامه نویس های غیر embedded از این روش تعریف شی استاتیک استفاده نمیکنن! اونهم به این علت که دیگه از تکنیک های dependency injection و... نمی تونن استفاده کنن!

تو فایل main از کتابخونه usbSerial استفاده کردم؛
تو کتابخونه usbSerial از کتابخونه usb استفاده کردم.
تو کتابخونه cdc_class_request و standard_request هم نیاز دارم که از کتابخونه usb استفاده کنم.
لذا چون 3 جا نیاز دارم که از کلاس usb با یک شیء استفاده کنم، اومدم شیء رو به صورت static تعریف کردم.
باشه مشکلی نداره هر چندبارهم که استفاده کنید بازهم به یک شی اشاره خواهد شد منتهی چون استاتیک هست پس هربار به آخرین داده های کلاس دسترسی خواهید داشت .!
این تابعی ()USB_IRQHandler هست که به صورت اتوماتیک تو وقفه call میشه؟ اگر اینطوره با چه میکروی کار میکنید؟ (احتمال داره که نحوه دسترسی به حافظه تو میکرو شما یک ملاحضه فنی داشته باشه که نمی تونید به پشته کلاس دسترسی داشته باشید)
همانطور که گفتم امکان نداره که این نوع دسترسی تو Memory model های pc مشکلی داشته باشه!

void USB_VIRTUAL_COM::init() {
// init hardware
usb.init();
...

الان اینجا دارید کلاس usb را init میکنید اگر متغیر هایی که گلوبال تعریف کردید را به عنوان متغیرهای عضو کلاس تعریف کنید باید بهشون دسترسی داشته باشید.!