oliver
2011-Jun-07 13:08 UTC
[Rd] "warning: assignment discards qualifiers from pointer target type"
Hello,
following an advice here from the list I looked into sources of other
packages (xts) and found the TYPEOF() macro/function, which really is
helpful.
I iused the follwong code snippet:
switch( TYPEOF( filename_sexp ) )
{
case STRSXP: filename = CHAR( STRING_ELT(filename_sexp, 0) );
break;
default: error("filename argument must be a string");
break;
}
Here, filename is of type char*
and one function opens a file with that name.
So it is purely intended to just grab out the char* from the
String-Expression.
Am I doing something wrong here, or is it ok, but I have somehow
to say the extracting macros/functions, that it is really intended
to throw away information and that a warning is not necessary?
Ciao,
Oliver
Duncan Murdoch
2011-Jun-07 14:36 UTC
[Rd] "warning: assignment discards qualifiers from pointer target type"
On 07/06/2011 9:08 AM, oliver wrote:> Hello, > > following an advice here from the list I looked into sources of other > packages (xts) and found the TYPEOF() macro/function, which really is > helpful. > > I iused the follwong code snippet: > > > switch( TYPEOF( filename_sexp ) ) > { > case STRSXP: filename = CHAR( STRING_ELT(filename_sexp, 0) ); > break; > > default: error("filename argument must be a string"); > break; > } > > > Here, filename is of type char* > and one function opens a file with that name. > So it is purely intended to just grab out the char* from the > String-Expression. > > Am I doing something wrong here, or is it ok, but I have somehow > to say the extracting macros/functions, that it is really intended > to throw away information and that a warning is not necessary?The result of calling CHAR should be a "const char *". You are not allowed to touch the string it points to. Duncan Murdoch