Liste des Groupes | Revenir à cl c |
On 26/11/2024 15:35, Thiago Adams wrote:Yes.>Another question is.. does the compiler cares about function type when calling a function or this is just an information to avoid programmers mistakes?
(I think I know the answer but I would like to learn more.)
>
I am using C89 as "compiler backend intermediate language".
>
I want a very simple output that could facilitate the construction of a simple C89 compiler focused on code generation.
Consider this code:I don't think so. But you are welcome to look at godbolt.org and see for yourself. Try this for example:
int main() {
strcmp("a", "b");
}
It compiles in -std=c89
Now changing to -std=c99 -std=c11 it gives:
error: implicit declaration of function 'strcmp'
Then adding:
int strcmp();
int main() {
strcmp("a", "b");
}
it works in C99 / C11
I think in C23 empty parameter list means no args, while in the previous versions (void) means no args.
Considering that in previous versions of C we could call a function without its signature I think the compiler only needs the caller side. (of course I am not considering programmer mistakes)
So, I think one extra simplification for small compilers is to ignore function parameters.
Les messages affichés proviennent d'usenet.