[fpc-devel]CFSTR, some C guru please
Dr. Rolf Jansen
InstantWare at t-online.de
Mon Aug 16 14:17:54 CEST 2004
Am 16.08.2004 um 13:18 schrieb Jonas Maebe:
> On 16 aug 2004, at 13:05, Olle Raab wrote:
>> But I doesn't understand it completely :
>> In the C headers, the macros is defined as follows:
>> #define CFSTR(cStr) __CFStringMakeConstantString(cStr "")
> In the CFString.h of the CoreFoundation framework it's defined as
> #define CFSTR(cStr) __CFStringMakeConstantString("" cStr "")
> but that doesn't really matter.
> "" is the same as '' in Pascal: it's an empty string. In C, to
> concatenate constant string, you don't put a "+" in between them, you
> just write them next to each other. So In Pascal that would be
> __CFStringMakeConstantString('' + cStr + '');
> This is probably to force some typecasting for certain ambiguous
> C-constructs. Pascal shouldn't need this.
I would like to add only that the CFSTR routine when declared as
function CFSTR(cStr: ConstCStringPtr): CFStringRef;
external name '___CFStringMakeConstantString';
does really work and gives correct results when called from a Free
Pascal program on OS X.
Please note the three undersores. Please note also that for this to
work, ConstCStringPtr has to be declared as PChar in MacTypes.p.
In Free Pascal this is so much more elegant compared to the macro in C,
More information about the fpc-devel