سلام.
یه دلیلش میتونه بخاطر تداخل نامها باشه .
مثلا اگر شما توی برنامه خودتون یک متغییر سراری به نام x داشته باشید . اگر به یک کتابخونه دیگه برنامه رو Link کنید که اون هم همچین متغییر سراسری رو داشته باشه اونوقت برنامه به Link نخواهد شد. و شما باید نام متغییر خودتون رو عوض کنید و همین باعث میشه که توی همه جاهایی که از اون استفاده کردید اونجا رو هم نسبت به نام جدیدی که به متغییر دادید عوض کنید .
یه دلیل دیگه هم اینه که اگر از برنامه شما چند-نخی باشه . باید خیلی مراقب باشید که چطوری از متغییرهای سراسری توی نخ ها بکارگیری کنید .
یکی دیگه اینه که اگر یک متغییر سراسری داشته باشی به نام x و اگر یه متغییر محلی هم داشته باشی به نام x . اونوقت وقتی که شما بخوایید روی متغییر x بنویسید یا بخونید . در متغییر x محلی باعث میشه که متغییر x سراسری نادیده گرفته شه . و شما باید از x:: برای اشاره به متغییر سراسری استفاده کنید .
یکی دیگه هم اینه که چون متغییرهای سراسری به دست چند تابع تغییر میکنن . هنگام Debug کردن برنامه خیلی سخت تر میشه فهمید که کدوم توابع اون رو اشتباه تغییر دادن .
همه اینا احتمال داشتن Bug تو برنامه شما رو بالا میبره . اگه حواستون نباشه !