konstruktory statickych trid a gnu c na linuxu

Stanislav Meduna stano na trillian.eunet.sk
Pátek Červen 4 18:12:11 CEST 1999


On 4 Jun 1999 14:07:16 +0200, Linux wrote:

: mam problem s prekladem pomoci gcc na Linuxu
: (jedna se o RH 5.2), ty same zdrojove texty
: se s gcc bezicim na FreeBSD (2.2.8) prekladaji spravne.

Tie iste zdrojaky, alebo aj ten isty sposob prekladu?

: konstruktory statickych trid se nikdy neprovedou,
: pokud je explicitne nezavolam.

Tento problem klasicky vznikne, ked v jednom .o
je ta trieda, v druhom staticka instancia,
obe .o su v statickej kniznici a na ziadnu
funkciu z tohoto druheho .o neexistuje odkaz.
V tom pripade totiz nie je dovod ho prilinkovat
a odkaz na konstruktor sa strati.

Napriklad:

=== foo.h ===
class A
{
public:
  A();
};

=== foo.cc ===
#include "foo.h"
#include <stdio.h>

A::A() { printf("A ctor\n"); }

=== bar.cc ===
#include "foo.h"

A a;

=== main.cc ===
#include <stdio.h>

main()
{
  printf("main\n");
}

% g++ -c *.cc
% ar crv libfoo.a foo.o bar.o
% g++ main.o -L. -lfoo
% ./a.out
main
% g++ *.o
% ./a.out
A ctor
main


Pokial chcete cielenejsiu pomoc, musite poskytnut
viac podrobnosti.

Zdravi
-- 
				Stano



Další informace o konferenci Linux