char ***argc problems.

Timon Gehr timon.gehr at gmx.ch
Sun Aug 12 13:57:33 PDT 2012


On 08/12/2012 10:33 PM, Andrew wrote:
> I'm attempting to create a wrapper for MPI, however, MPI_Init
> wants to read the arguments for main():
>
> MPI_Init(int *argv, char ***argc);
>
> How do I get this last level of pointer reference?
>
> So far, I have:
>
> void main (string[] args)
> {
>     auto argarr = new char*[args.length];
>     foreach(i, a; args)
>     argarr[i] = (a.dup ~ '\0').ptr;
>
>     int argc = to!(int)(argarr.length);
>     MPI_Init(&argc, argarr.ptr);
> }
>
> Any ideas?
>
> -Andrew

Maybe like this?

import std.algorithm, std.array, std.conv;
void main(string[] args){
     auto argarr = args.map!(a=>(a ~ '\0').ptr).array;

     int argc = to!(int)(argarr.length);
     auto argv = argarr.ptr;

     MPI_Init(&argc, &argv);

     args = argv[0..argc].map!(to!string).array;

     // ...
}


More information about the Digitalmars-d-learn mailing list