March 13, 2004 string inconsistencies? | ||||
|---|---|---|---|---|
| ||||
It seems to me that that are some inconsistencies in how strings are handled. For example,
const char[11] a = "a"; // okay
char[11] b = "a"; // runtime error
These should be handled the same.
Also, this causes some issues in calls to C API calls. Suppose that there is a function:
void foo( char *p, int *len );
which fills in p with values and sets len to the length. You can call the function like:
char[maxsize] myp;
int mylen;
foo( myp, &mylen );
but now, the length of myp is set to maxsize, and the comparison operators don't work. If the value placed into myp was "xxx", then
char[] myvalue = "xxx";
if (myvalue == myp || icmp( myvalue, myp ))
is always false because it appears that the lengths don't match. If you say
printf( "%.*s\n", myp );
it knows the length of myp. It makes sense that the cmp() and icmp() routines would also, and do the comparison based on that.
| ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply