www.digitalmars.com Home | Search | C & C++ | D | DMDScript | News Groups | index | prev | next
Archives

D Programming
D
D.gnu
digitalmars.D
digitalmars.D.bugs
digitalmars.D.dtl
digitalmars.D.dwt
digitalmars.D.announce
digitalmars.D.learn
digitalmars.D.debugger

C/C++ Programming
c++
c++.announce
c++.atl
c++.beta
c++.chat
c++.command-line
c++.dos
c++.dos.16-bits
c++.dos.32-bits
c++.idde
c++.mfc
c++.rtl
c++.stl
c++.stl.hp
c++.stl.port
c++.stl.sgi
c++.stlsoft
c++.windows
c++.windows.16-bits
c++.windows.32-bits
c++.wxwindows

digitalmars.empire
digitalmars.DMDScript

c++ - Calling func before main()

↑ ↓ ← "Karol Gottan" <gottan op.pl> writes:
Hi,

I am looking for a way how to call a desired
function before main() is called in C mode ?

Something like
    #pragma startup foo
in other compilers.

--

Karol Gottan
Feb 01 2004
↑ ↓ Jan Knepper <jan smartsoft.us> writes:
Very simple... ;-)



static int     result_of_foo = foo ();



int  main ( int, char **, char ** )
{
    return (  0 );
}



static int  foo ()
{
    // Do something before 'main' is being invoked.

    return (  0 );
}


HTH


Karol Gottan wrote:
 Hi,
 
 I am looking for a way how to call a desired
 function before main() is called in C mode ?
 
 Something like
     #pragma startup foo
 in other compilers.
 
 --
 
 Karol Gottan
 
 

-- ManiaC++ Jan Knepper But as for me and my household, we shall use Mozilla... www.mozilla.org
Feb 01 2004
"Karol Gottan" <gottan op.pl> writes:
<jan smartsoft.us> wrote :

 Very simple... ;-)

Unfortunately I am getting this : ------------ static int result_of_foo = foo (); ^ test.c(3) : Error: constant initializer expected ------------ Thanks for jumping in. -- Karol
Feb 01 2004
↑ ↓ Scott Michel <scottm cs.ucla.edu> writes:
Karol Gottan wrote:

 <jan smartsoft.us> wrote :
 
 Very simple... ;-)

Unfortunately I am getting this : ------------ static int result_of_foo = foo (); ^ test.c(3) : Error: constant initializer expected ------------

You're not compiling C++ code, are you? -scooter
Feb 02 2004
↑ ↓ → "Karol Gottan" <gottan op.pl> writes:
<scottm cs.ucla.edu> wrote :


[...]

 You're not compiling C++ code, are you?

In my first attempt yes - I did not compile in C++ mode. But then I realised I did it wrong and added -cpp. -- Karol
Feb 02 2004
Jan Knepper <jan smartsoft.us> writes:
Jan Knepper wrote:

 Very simple... ;-)
 
 

static int foo ();
 
 static int     result_of_foo = foo ();
 
 
 
 int  main ( int, char **, char ** )
 {
    return (  0 );
 }
 
 
 
 static int  foo ()
 {
    // Do something before 'main' is being invoked.
 
    return (  0 );
 }
 
 
 HTH
 
 
 Karol Gottan wrote:
 
 Hi,

 I am looking for a way how to call a desired
 function before main() is called in C mode ?

 Something like
     #pragma startup foo
 in other compilers.

 -- 

 Karol Gottan


-- ManiaC++ Jan Knepper But as for me and my household, we shall use Mozilla... www.mozilla.org
Feb 01 2004
→ "Karol Gottan" <gottan op.pl> writes:
<jan smartsoft.us> wrote :
 Jan Knepper wrote:

 Very simple... ;-)

static int foo ();

Thanks ! Works perfectly ! -- Karol
Feb 01 2004
"Steve Strand" <snstrand comcast.net> writes:
Another way is to define a class at global level that has a constructor.
The constructor will be called before main().
Example:

struct foo {
    foo() {cout << "do stuff before main\n";}
    ~foo() {cout << "do stuff after main\n";}
} myfoo;

int main()
{
    cout << "here we are in main\n";
}
Feb 01 2004
↑ ↓ Scott Michel <scottm mordred.cs.ucla.edu> writes:
Before someone takes the initiative and starts elaborating on this example,
this question is a comp.lang.c++ FAQ item, whihc also covers how to sequence
object allocation and construction before main() is called.


Steve Strand <snstrand comcast.net> wrote:
 Another way is to define a class at global level that has a constructor.
 The constructor will be called before main().
 Example:
 
 struct foo {
    foo() {cout << "do stuff before main\n";}
    ~foo() {cout << "do stuff after main\n";}
 } myfoo;
 
 int main()
 {
    cout << "here we are in main\n";
 }

Feb 01 2004
↑ ↓ → Jan Knepper <jan smartsoft.us> writes:
<g> I was thinking that the question would come from a C++ classes book 
or something like that.

It is one of the standard questions employers will ask you during a 
technical job interview for a C/C++ coding job...



Scott Michel wrote:
 Before someone takes the initiative and starts elaborating on this example,
 this question is a comp.lang.c++ FAQ item, whihc also covers how to sequence
 object allocation and construction before main() is called.
 
 
 Steve Strand <snstrand comcast.net> wrote:
 
Another way is to define a class at global level that has a constructor.
The constructor will be called before main().
Example:

struct foo {
   foo() {cout << "do stuff before main\n";}
   ~foo() {cout << "do stuff after main\n";}
} myfoo;

int main()
{
   cout << "here we are in main\n";
}


-- ManiaC++ Jan Knepper But as for me and my household, we shall use Mozilla... www.mozilla.org
Feb 01 2004