Beginning C++ in FreeBSD

Jonathan Lemon jlemon at flugsvamp.com
Wed Apr 28 10:34:37 PDT 2004


I knew there was a good reason why I redirected -chat to /dev/null,
and I'm going to restore that procmail rule in about 30 seconds.

However, before I do that, I'll note this entire conversation is 
utterly stupid.  That "feature" of C++ initializers being called 
on startup is simply from lib/csu/i386/c++rt0.c (or equivalent);
if you really wanted the same feature in C, you'd write your own
crt0.c and then call gcc with "-nostartfiles"

If you don't want "main()" as your entry point, use "ld -e myfunc" instead.
--
Jonathan  (restoring procmail filters)

Onn Wed, Apr 28, 2004 at 08:31:04PM +0400, Sergey Zaharchenko wrote:
> On Wed, Apr 28, 2004 at 04:30:10PM +0200,
>  Dag-Erling Sm??rgrav probably wrote:
> > Sergey Zaharchenko <doublef at tele-kom.ru> writes:
> > > If the thesis sounds like
> > >
> > >> Any algorithm that can be written in one Turing-complete language can
> > >> be written in another Turing-complete language.
> > >
> > > then I think I understand it.
> > 
> > No.  A language is Turing-complete if it can be used to implement a
> > universal Turing machine.  What you quote is merely a consequence of
> > Turing-completeness, not its definition.
> > 
> 
> OK.
> 
> If I take out every word about main() from C's specification (making it
> an ordinary function), will the resulting `language' stay
> Turing-complete? If not, why? Is there an *algorithm* that I can write
> in C that I can't write in this derived language? (except that I have to
> run some of the functions of the resulting code from somewhere else).
> 
> >
> > > In the functional way (`what it can do') C is not different from C++, as
> > > you all are pointing out (so I'm not trying to persuade you Turing was
> > > wrong). It's different in what it allows you to inform the system (the
> > > linker, for instance) about (and it will learn that *before* any actual
> > > algorithm of yours is executed).
> > 
> > The operating system, the C++ compiler and the linker are all written
> > in C, and using C, you can write an emulator for the computer, on
> > which the OS, C++ compiler and linker will behave exactly as you
> > expect.
> > 
> 
> [ In fact, what I described is indeed intended to be a shared library,
> not a whole program... ]
> 
> Within such emulation you will certainly be able to whatever you wish,
> including dynamically linking a library which has its own initialization
> in it (the constructor translated to C) to an executable. Fortunately,
> you don't have to do it.
> 
> But how do you link a real executable against an emulated shared
> library:)?
> 
> > DES
> > -- 
> > Dag-Erling Sm?rgrav - des at des.no
> > 
> 
> -- 
> DoubleF
> Everything is worth precisely as much as a belch, the difference being
> that a belch is more satisfying.
> 		-- Ingmar Bergman




More information about the freebsd-chat mailing list