↑ ↓ ← → "Gisle Vanem" <giva users.sourceforge.net>
writes:
I've a hard time understanding why DMC flags this
as an error:
/* int bar (const char *str1, const char *str2); */
int bar ();
int foo1 (char **list, const char *s)
{
return bar (*list, s);
}
int foo2 (const char *const *list, const char *s)
{
return bar (*list, s); /* line 11 */
}
---------------
dmc -c test.c
^
test.c(11) : Error: need explicit cast for function parameter 1 to get
from: char const *const
to : char *
--- errorlevel 1
If I use the prototype in the 1st line:
int bar (const char *str1, const char *str2);
instead of the simple "int bar()", it works.
It seems dmc tries to "grow a brain" and create it's own internal
prototype based on the first call to bar(). Thus thinking it should
be "int bar (char *);", while it's not.
Why does it do that? Any reference to a C-standard supporting
this behaviour?
I know I should use full prototypes, but I encountered this while
porting a program that gcc/MSVC/Watcom has no problem with.
--
Gisle V.
# rm /bin/laden
/bin/laden: Not found
↑ ↓ ← → Jan Knepper <jan smartsoft.us>
writes:
You might be running into one of Walter's inventions (if I remember
correctly) here called "autoprototyping".
You can turns this off with -p
HTH
Gisle Vanem wrote:
I've a hard time understanding why DMC flags this
as an error:
/* int bar (const char *str1, const char *str2); */
int bar ();
int foo1 (char **list, const char *s)
{
return bar (*list, s);
}
int foo2 (const char *const *list, const char *s)
{
return bar (*list, s); /* line 11 */
}
---------------
dmc -c test.c
return bar (*list, s);
^
test.c(11) : Error: need explicit cast for function parameter 1 to get
from: char const *const
to : char *
--- errorlevel 1
If I use the prototype in the 1st line:
int bar (const char *str1, const char *str2);
instead of the simple "int bar()", it works.
It seems dmc tries to "grow a brain" and create it's own internal
prototype based on the first call to bar(). Thus thinking it should
be "int bar (char *);", while it's not.
Why does it do that? Any reference to a C-standard supporting
this behaviour?
I know I should use full prototypes, but I encountered this while
porting a program that gcc/MSVC/Watcom has no problem with.
--
ManiaC++
Jan Knepper
↑ ↓ ← → "Gisle Vanem" <giva users.sourceforge.net>
writes:
"Jan Knepper" <jan smartsoft.us> wrote:
You might be running into one of Walter's inventions (if I remember
correctly) here called "autoprototyping".
You can turns this off with -p
That fixed it, thanks.
--gv