Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > How to call function whose function call with arguments is in astring Options

Reply
Thread Tools

How to call function whose function call with arguments is in astring Options

 
 
grbgooglefan
Guest
Posts: n/a
 
      01-30-2008
Hello,
Can you please enlighten me if we can do this in C?

I would like to do something like this:
---------------------------------------------------------------------------*--------------------------
typedef struct IOParams {
char *ioString;
long lionum;
double dionum;
float fionum;
int nionum;


} *pIOParams;

char *strFunctionCmd =
"myfunctionCall("iiisd",v_ioparams[0].nionum,v_ioparams[1].nionum,v_ioparam*
s[2].nionum,v_ioparams[3].ioString,v_ioparams[4].dionum)";


int retstat = call_function_in_string(strFunctionCmd );
---------------------------------------------------------------------------*--------------------------
The vector size could vary, but that is not main issues here.
The problem is that even the variable number arguments function
cannot
be used here because for those functions also we need to have the
number & type of arguments fixed at compile time and the input
arguments passed to them are individual variables.

In the above case, variables are part of a vector having variable
size, so writing call for that also is difficult.

Is there any way to achieve this in C?
Any suggestions please?
Thanks in advance for help
 
Reply With Quote
 
 
 
 
Mark Bluemel
Guest
Posts: n/a
 
      01-30-2008
grbgooglefan wrote:
> Hello,
> Can you please enlighten me if we can do this in C?
>
> I would like to do something like this:
> ---------------------------------------------------------------------------*--------------------------
> typedef struct IOParams {
> char *ioString;
> long lionum;
> double dionum;
> float fionum;
> int nionum;
>
>
> } *pIOParams;
>
> char *strFunctionCmd =
> "myfunctionCall("iiisd",v_ioparams[0].nionum,v_ioparams[1].nionum,v_ioparam*
> s[2].nionum,v_ioparams[3].ioString,v_ioparams[4].dionum)";
>
>
> int retstat = call_function_in_string(strFunctionCmd );


You can't do this as such, as you should have worked out from reading
your C textbook...

The nearest approach is to use function pointers, perhaps in a lookup
table, to allow you to choose a function at runtime. Argument handling
in such a context is tricky as the number and type of arguments will be
fixed, but creative use of pointers to structures may help.
 
Reply With Quote
 
 
 
 
Malcolm McLean
Guest
Posts: n/a
 
      01-30-2008

"grbgooglefan" <(E-Mail Removed)> wrote in message
>
>The vector size could vary, but that is not main issues here.
>The problem is that even the variable number arguments function
>cannot be used here because for those functions also we need to have the
>number & type of arguments fixed at compile time and the input
>arguments passed to them are individual variables.
>

One of the very few things C won't let you do is build an argument list at
runtime. So to achieve what you want in C, effectively you have to write an
interpreter for another language.

--
Free games and programming goodies.
http://www.personal.leeds.ac.uk/~bgy1mm


 
Reply With Quote
 
Kenneth Brody
Guest
Posts: n/a
 
      01-30-2008
Malcolm McLean wrote:
>
> "grbgooglefan" <(E-Mail Removed)> wrote in message
> >
> >The vector size could vary, but that is not main issues here.
> >The problem is that even the variable number arguments function
> >cannot be used here because for those functions also we need to have the
> >number & type of arguments fixed at compile time and the input
> >arguments passed to them are individual variables.
> >

> One of the very few things C won't let you do is build an argument list at
> runtime. So to achieve what you want in C, effectively you have to write an
> interpreter for another language.


Well, it is possible to pass such things by creating a struct of
a type and a union of all possible parameter types, and pass a
pointer to an array of this struct (along with a parameter count).
Think of argc/argv, where argv is a "MyParam_t *" rather than a
"char **".

Of course, the called function needs to be written to takes its
arguments in such a manner, so you are correct that this cannot
be done in the general sense.

--
+-------------------------+--------------------+-----------------------+
| Kenneth J. Brody | www.hvcomputer.com | #include |
| kenbrody/at\spamcop.net | www.fptech.com | <std_disclaimer.h> |
+-------------------------+--------------------+-----------------------+
Don't e-mail me at: <(E-Mail Removed)>

 
Reply With Quote
 
Kenny McCormack
Guest
Posts: n/a
 
      01-30-2008
In article <(E-Mail Removed)>,
Malcolm McLean <(E-Mail Removed)> wrote:
>
>"grbgooglefan" <(E-Mail Removed)> wrote in message
>>
>>The vector size could vary, but that is not main issues here.
>>The problem is that even the variable number arguments function
>>cannot be used here because for those functions also we need to have the
>>number & type of arguments fixed at compile time and the input
>>arguments passed to them are individual variables.
>>

>One of the very few things C won't let you do is build an argument list at
>runtime. So to achieve what you want in C, effectively you have to write an
>interpreter for another language.


Not in standard C, that is true.

OP should, of course, google for "avcall".

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
declaring a friend template function whose arguments are of type = private member type Hicham Mouline C++ 1 03-27-2009 03:58 PM
How to call function whose function call with arguments is in astring grbgooglefan C++ 2 01-30-2008 07:18 AM
How to call function whose function call with arguments is in astring Options grbgooglefan C Programming 0 01-30-2008 04:19 AM
Is there a string function to trim all non-ascii characters out of astring silverburgh.meryl@gmail.com Python 10 12-31-2007 01:51 PM



Advertisments