| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| PIC C18 - Warning [2058] call of function without prototype http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=10684 |
Страница 1 от 1 |
| Автор: | npelov [ Нед Ное 11, 2012 12:38 pm ] | |||||||||||||||||||||||||||
| Заглавие: | PIC C18 - Warning [2058] call of function without prototype | |||||||||||||||||||||||||||
Това вече от доста време ме тормози и не мога да разбера какво става. Дава ми "call of function without prototype", но само на някои функции от header file-a: Извиквам функиите така:
Дава ми warning САМО на initBacklight(). На другите 2 не дава. Всъщност на никоя друга функция не дава warning. lcd.h e:
Тялото на initBacklight():
|
||||||||||||||||||||||||||||
| Автор: | ps66 [ Нед Ное 11, 2012 1:22 pm ] |
| Заглавие: | Re: PIC C18 - Warning [2058] call of function without protot |
void initBacklight(void); void initBacklight(void) { } |
|
| Автор: | npelov [ Нед Ное 11, 2012 4:31 pm ] |
| Заглавие: | Re: PIC C18 - Warning [2058] call of function without protot |
първото е в header file-a. за initLcd() не дава тази грешка, а са декларирани по същия начин |
|
| Автор: | palavrov [ Нед Ное 11, 2012 5:26 pm ] | ||||||||||||||||||||||||||||||||||||
| Заглавие: | Re: PIC C18 - Warning [2058] call of function without protot | ||||||||||||||||||||||||||||||||||||
За C++ и някои C компилатори
Имаше и други простотии, ама не ми се пише в момента ... |
|||||||||||||||||||||||||||||||||||||
| Автор: | npelov [ Нед Ное 11, 2012 10:49 pm ] |
| Заглавие: | Re: PIC C18 - Warning [2058] call of function without protot |
Мерси! Имам някакво усещане, че това не е правилно, но ти го казваш така като че ли е стандарт. Явно някой едно време го е решил така и после някой друг е обявил първия за кретен и го е махнал... а Микрочип (както и аз) не са чували за този втория и затова си карат по тъпия начин. |
|
| Автор: | Nikola Kirov [ Нед Ное 11, 2012 10:56 pm ] |
| Заглавие: | Re: PIC C18 - Warning [2058] call of function without protot |
"Принципно ако не декларираш explicit функцията като void а просто я декларираш () компилатора приема implicit, че тя има един int параметър - т.е. става " Това пък къде си го гледал? По принцип понякога не си слагам void при декларациите но не съм забелязал в асемблерските листинги нещо нередно. Не ми се вижда и логично да е така. |
|
| Автор: | perlsite [ Пон Ное 12, 2012 2:19 am ] |
| Заглавие: | Re: PIC C18 - Warning [2058] call of function without protot |
Поне на теория (дотолкова, доколкото стандарта се спазва): в "С": void funct (void) - фунция неочакваща входни аргументи; void funct () - функция очакваща произволен брой аргументи от неопределен тип; в "С++": void funct (void) - фунция неочакваща входни аргументи; void funct () - фунция неочакваща входни аргументи, т.е. еднакво с горния ред. |
|
| Автор: | palavrov [ Пон Ное 12, 2012 2:02 pm ] |
| Заглавие: | Re: PIC C18 - Warning [2058] call of function without protot |
Така е като се пише по памет - получават се глупости ... извинявам се. На функции без прототип в C, компилатора прави прототип от рода на int fn(); т.е. функцията връща int и се опитва да познае какви са параметрите според употребата и. ( не както е останало в дебелата ми глава че има подразбиращ се инт параметър ) Малко по особен е случая като има декларация от рода на type fn(); - това се води декларация, но не прототип - прототип е когато се укажат точно параметрите. В C89/90 не ти трябва нито прототип, нито декларация за да се компилира (това разбира се не значи, че трябва да се прави така), в C99 е задължително преди извикване функцията да е декларирана, но не е задължително да има прототип. Т.е. в примера се декларира функция, но не и се прави прототип - затова и има варнинг. |
|
| Автор: | npelov [ Пон Ное 12, 2012 6:13 pm ] |
| Заглавие: | Re: PIC C18 - Warning [2058] call of function without protot |
@Nikola Kirov Не знам какво си мисли компилатора, но поне за C18 като сложа void в скобите спира да ми дава warning. За мен това е достатъчно. Дали по подразбиране решава че има 1 инт параметър - не знам, но не работи както трябва без (void) ... понякога. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|