Добрый день!
Есть вот такой исходник test.c:
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char ** argv )
{
int a;
qwerty();
qwerty( 5 );
qwerty( 1, 2 );
qwerty( -2, -3, -4 );
return( 0 );
}
int qwerty( int a, int b )
{
printf( "a==%d, b==%d, marsian==%d\n", a, b, *(&a+2) );
return( 0 );
}
Вот так вот собираю:
gcc -o test test.с
Вот что получаю при запуске:
a==0, b==134518620, marsian==-1079075352
a==5, b==134518620, marsian==-1079075352
a==1, b==2, marsian==-1079075352
a==-2, b==-3, marsian==-4
Доп. информация:
компилятор - gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)
ОС - Fedora 10.
Вот непосредственно сам(и) вопрос(ы):
1. Разве не должен компилятор заругаться, встретив необъявленную ранее функцию (qwerty)?
2. В случае двухпроходной компиляции разве не проверяется на соответствие список формальных параметров списку фактических?
С уважением.
PS. Если что-то не то спросил, не пеняйте сильно.
PSS. Плюсовый компилятор ругается:
test.c: In function ‘int main(int, char**)’:
test.c:10: error: ‘qwerty’ was not declared in this scope
Форум —
Development





