RE:command line args

Masaharu Goto (MXJ02154@nifty.ne.jp)
Wed, 26 Aug 1998 20:09:00 +0900


Sean,

>My question is regarding how does CINT deals with command line arguments ?

Yes, it does. Just the same way as the compiled C/C++ program hadles the
arguments.

>eg: this doesn't work
>
>.L cmd.C
>main(3,{"main","foo","blah"})
>
>#include <iostream.h>
>main(int argc, char* argv[]) {
> for(int i=0; i<argc;i++){
> cout << argv[i] << endl;
> }
>}

This is a very interesting notation. It is not supported by cint and neither
by other C/C++ processing systems, this inspires me.
I guess your expectation is that , like perl or shell script, a script
interpreter should execute commands out side of function scope. This mechanism
is used by other script interpreters and it plays a role of main function.
Cint handles C/C++ code, so the entry point is main() function rather than
statements appears in global scope.

In this case, to do what you want, suppose you have cmd.C as follows

// cmd.C /////////////////////////
#include <iostream.h>
main(int argc, char* argv[]) {
for(int i=0; i<argc;i++){
cout << argv[i] << endl;
}
}
// end of cmd.C //////////////////

Start cint or ROOT and use the command as follows.

root[0] .L cmd.C
root[1] char *argv[]={"main","abc","def"};
root[2] main(3,argv);

Or use raw cint interpreter from UNIX or DOS command line,

$ cint cmd.C abc def

This will do.

Masaharu Goto