LINUX.ORG.RU

История изменений

Исправление Waterlaz, (текущая версия) :

$ cat tst.c

#include <stdio.h>
int x;
int g();
int f(){
    x++;
    return x;
}
int main(){
    printf("%d\n", f());
    printf("%d\n", g());
    printf("%d\n", f());
    printf("%d\n", g());
    printf("%d\n", f());
}

$ cat a.c

int x;
int g(){
    x++;
    return x;
}

$ gcc a.c tst.c
$ ./a.out 
1
2
3
4
5

Поблажки линкера?

Исправление Waterlaz, :

 $ cat tst.c
#include <stdio.h>
int x;
int g();
int f(){
    x++;
    return x;
}
int main(){
    printf("%d\n", f());
    printf("%d\n", g());
    printf("%d\n", f());
    printf("%d\n", g());
    printf("%d\n", f());
}


 $ cat a.c
int x;
int g(){
    x++;
    return x;
}


 $ gcc a.c tst.c

 $ ./a.out 
1
2
3
4
5

Поблажки линкера?

Исходная версия Waterlaz, :

 $ cat tst.c
#include <stdio.h>

int x;

int g();

int f(){
    x++;
    return x;
}

int main(){
    printf("%d\n", f());
    printf("%d\n", g());
    printf("%d\n", f());
    printf("%d\n", g());
    printf("%d\n", f());
}


 $ cat a.c
int x;

int g(){
    x++;
    return x;
}


 $ gcc a.c tst.c


 $ ./a.out 
1
2
3
4
5


Поблажки линкера?