Всичко ме задръсти напълно - глобалната променлива не се вижда от друг файл ( )
Разглеждате архивите на форума.
Автор: Make_Pic() Дата: 18/04/2005 14:00
Всичко ме задръсти напълно - глобалната променлива не се вижда от друг файл. Декларирам променлива преди main(), но как да я направя видима в други файлове на проекта?
Автор: DimaG () Дата: 18/04/2005 14:05
Опитайте да го наречете extern в други файлове
***** extern int some_value;
Изпращане редактирано (18.04.2005 14:06)
Автор: Entuziast () Дата: 18/04/2005 15:10
Направете външен, както ви посъветваха или по-добре - създайте h-файл и добавете декларации на всички променливи, които трябва да видите в други файлове. extern int MyVar;
Между другото, тук могат да бъдат поставени и прототипи на функции. Променливите и функциите ще бъдат видими във всички файлове, където включвате този файл.
Автор: Make_Pic() Дата: 18/04/2005 15:16
във функцията extern myVar компилаторът изглежда го е погълнал.
Автор: Бил () Дата: 18/04/2005 15:46
за тази цел също съществуват глобални променливи, които да описват ЕДНО време и на ЕДНО място. В противен случай, в l всяка функция, която използва тази променлива, ще трябва да бъде декларирана всеки път. Но какво ще стане, ако има много x функции?
Автор: Вова () Дата: 18/04/2005 16:05
написал или не написал mp3 декодер за lpc? каза, че е използвал GCC, как е, а?
Автор: Make_Pic() Дата: 18/04/2005 17:05
Автор: AL () Дата: 18/04/2005 18:22
Има файлове fifo.h и fifo.c, трябваше да направя една променлива глобална. Декларирах го като extern в заглавката и включвам тази заглавка във всички файлове, където използвам FIFO буфера, но също така включвам заглавката във fifo.c (от заглавкатаизползват се константи , които се дефинират чрез define) и отива във fifo.c, има както декларация на променлива, така и нейното външно описание. Има ли някакви нюанси (подводни камъни) в такова използване на или трябва да е така?
Автор: Entuziast () Дата: 18/04/2005 18:22
Автор: Вова () Дата: 18/04/2005 19:23
добре, чакаме проекта за захарта;)
Автор: Бил () Дата: 18/04/2005 21:19
Изпращане редактирано (18.04.2005 21:21)
Автор: AL () Дата: 18/04/2005 21:34
Разбираемо, иначе го направих, работи, но имаше съмнения. Благодарим ви за отговора.
Автор: patton () Дата: 18/04/2005 22:25
Автор: patton () Дата: 18/04/2005 22:46
в *.h - декларация в *.c дефиниция и extern е клас за съхранение (външен тип връзка и статичен живот) за разлика от по-защитен - статичен (вътрешен)
няма нужда да създавате ненужни обекти
Автор: Entuziast () Дата: 19/04/2005 11:32
Всичко ще се компилира и ще работи, НО вашите съмнения са правилни: програмата е логически изградена неправилно.В заглавния файл трябва да се постави само това, от което се нуждаете за да използвате обекта. И дефинираният размер на опашката, например, не трябва да бъде изваден. Ако трябва да разберете дали има място в опашката - напишете функция, която ще върне това и поставете неговия прототип в заглавния файл. Научно това се нарича капсулиране
Автор: AL () Дата: 19/04/2005 15:20
и когато включвам заглавката в C кода, тя е „може да е във файла, където се намира дефиницията " p.s. това е от Керниган и Ричи.
Изпращанередактирано (19.04.2005 15:44)
Автор: patton () Дата: 20/04/2005 22:57