Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
October 05, 2002 Code checking | ||||
---|---|---|---|---|
| ||||
Hi, I am using the C compiler with the maximum checking option I found, -A -w- -r. However, the compiler does not check the possible errors as I would like, ie : - I declared main() as returning a void, and the compiler did not complain. - I declared a function returning an int, and I do not use return statement in the function body. Again, the compiler does not complain. - I use a function without declaring the prototype. The compiler says nothing. Is there a compiler option I have not seen, or the compiler does not make these controls ? Thx SD |
October 05, 2002 Re: Code checking | ||||
---|---|---|---|---|
| ||||
Posted in reply to SD | In article <ann0hg$16cs$1@digitaldaemon.com>, SD (stephanedelaval@wanadoo.fr) says... > Hi, > I am using the C compiler with the maximum checking option I found, -A -w- > -r. > However, the compiler does not check the possible errors as I would like, > ie : > - I declared main() as returning a void, and the compiler did not complain. > - I declared a function returning an int, and I do not use return statement > in the function body. Again, the compiler does not complain. > - I use a function without declaring the prototype. The compiler says > nothing. > > Is there a compiler option I have not seen, or the compiler does not make these controls ? If you want better compile-time checking, why not compile your C programs using the C++ compiler? It's been awhile since I used C very much, but I recall that the issues you object to were not errors according to the C language. Those and many other needless lapses were tightened up in C++. -- -Larry Brasfield (address munged, s/sn/h/ to reply) |
October 05, 2002 Re: Code checking | ||||
---|---|---|---|---|
| ||||
Posted in reply to Larry Brasfield | Thk for the prompt reply.
You are suggesting a very good solution. However I used the -cpp option
of the sc.exe dmars compiler, and it still have the same problem.
Is there another C++ compiler in the digital mars package ? Except for
this flag, I have not seen any reference for it...
SD
> In article <ann0hg$16cs$1@digitaldaemon.com>, SD (stephanedelaval@wanadoo.fr) says...
>> Hi,
>> I am using the C compiler with the maximum checking option I found,
>> -A -w- -r.
>> However, the compiler does not check the possible errors as I would
>> like, ie :
>> - I declared main() as returning a void, and the compiler did not
>> complain. - I declared a function returning an int, and I do not use
>> return statement in the function body. Again, the compiler does not
>> complain. - I use a function without declaring the prototype. The
>> compiler says nothing.
>>
>> Is there a compiler option I have not seen, or the compiler does not make these controls ?
>
> If you want better compile-time checking, why
> not compile your C programs using the C++
> compiler? It's been awhile since I used C
> very much, but I recall that the issues you
> object to were not errors according to the
> C language. Those and many other needless
> lapses were tightened up in C++.
>
|
October 06, 2002 Re: Code checking | ||||
---|---|---|---|---|
| ||||
Posted in reply to SD | In article <ann7mi$1cj9$1@digitaldaemon.com>, SD says... >>> However, the compiler does not check the possible errors as I would >>> like, ie : >>> - I declared main() as returning a void, and the compiler did not >>> complain. - I declared a function returning an int, and I do not use >>> return statement in the function body. Again, the compiler does not >>> complain. - I use a function without declaring the prototype. The >>> compiler says nothing. got version 8.29 ? |
October 06, 2002 Re: Code checking | ||||
---|---|---|---|---|
| ||||
Posted in reply to bw | Yes, I have the latest available. bw <bw_member@pathlink.com> wrote in news:annuff$24fi$1@digitaldaemon.com: > > In article <ann7mi$1cj9$1@digitaldaemon.com>, SD says... >>>> However, the compiler does not check the possible errors as I would >>>> like, ie : >>>> - I declared main() as returning a void, and the compiler did not >>>> complain. - I declared a function returning an int, and I do not use >>>> return statement in the function body. Again, the compiler does not >>>> complain. - I use a function without declaring the prototype. The >>>> compiler says nothing. > > got version 8.29 ? > > > > > |
October 06, 2002 Re: Code checking | ||||
---|---|---|---|---|
| ||||
Posted in reply to SD | In article <anosh8$ke$1@digitaldaemon.com>, SD says... > >Yes, I have the latest available. > >> got version 8.29 ? the 8.29 i have catches all those, don't understand why you're having trouble? /* testing for errors */ #include <stdio.h> void main(void) { func(); } int func() { } C:\cpp\my>sc -A -w- -r errs.c func(); ^ errs.c(8) : Error: function 'func' has no prototype errs.c(15) : Error: need at least one external def --- errorlevel 1 C:\cpp\my>sc -A -w- -r -cpp errs.c func(); ^ errs.c(8) : Error: function 'func' has no prototype } ^ errs.c(14) : Error: implied return of func at closing '}' does not return value errs.c(15) : Error: need at least one external def --- errorlevel 1 |
October 07, 2002 Re: Code checking | ||||
---|---|---|---|---|
| ||||
Posted in reply to bw | 'main' is required to be treated by compilers as a special function (to not break old code), and thus only for 'main' it is legal to declare it as 'void', declare it as int and not return a value. Remember, in older versions of C, a function without type declaration was treated as returning an int, and even then, it was ok for it to not return anything. afunction(){ ... } is in reality an 'int' function. These topics have been widely discussed in C computer magazines and I recollect have been elucidated in the ARM (Annotated Reference Manual), the standard which talks about C/C++. - Rajiv "bw" <bw_member@pathlink.com> wrote in message news:anpfnv$ikk$1@digitaldaemon.com... > In article <anosh8$ke$1@digitaldaemon.com>, SD says... > > > >Yes, I have the latest available. > > > >> got version 8.29 ? > > the 8.29 i have catches all those, don't understand why you're having trouble? > > /* testing for errors */ > #include <stdio.h> > void main(void) > { > func(); > } > int func() > { > > } > > C:\cpp\my>sc -A -w- -r errs.c > func(); > ^ > errs.c(8) : Error: function 'func' has no prototype > errs.c(15) : Error: need at least one external def > --- errorlevel 1 > > C:\cpp\my>sc -A -w- -r -cpp errs.c > func(); > ^ > errs.c(8) : Error: function 'func' has no prototype > } > ^ > errs.c(14) : Error: implied return of func at closing '}' does not return value > errs.c(15) : Error: need at least one external def > --- errorlevel 1 > > > |
October 08, 2002 Re: Code checking | ||||
---|---|---|---|---|
| ||||
Posted in reply to bw | Hi OK, that's fine now. I think the -cpp flag made the difference. Mny thanks Stephane bw <bw_member@pathlink.com> wrote in news:anpfnv$ikk$1@digitaldaemon.com: > In article <anosh8$ke$1@digitaldaemon.com>, SD says... >> >>Yes, I have the latest available. >> >>> got version 8.29 ? > > the 8.29 i have catches all those, don't understand why you're having trouble? > > /* testing for errors */ > #include <stdio.h> > void main(void) > { > func(); > } > int func() > { > > } > > C:\cpp\my>sc -A -w- -r errs.c > func(); > ^ > errs.c(8) : Error: function 'func' has no prototype > errs.c(15) : Error: need at least one external def > --- errorlevel 1 > > C:\cpp\my>sc -A -w- -r -cpp errs.c > func(); > ^ > errs.c(8) : Error: function 'func' has no prototype > } > ^ > errs.c(14) : Error: implied return of func at closing '}' does not > return value errs.c(15) : Error: need at least one external def > --- errorlevel 1 > > > |
Copyright © 1999-2021 by the D Language Foundation