[M3devel] "target specific pragmas"?
Tony Hosking
hosking at cs.purdue.edu
Tue Feb 12 03:08:46 CET 2008
Indeed!
On Feb 11, 2008, at 8:37 PM, Darko wrote:
> I think it's not a good idea. I think all platform specific code
> should be in a separate file. I'd also like to see an option to
> move calling conventions to the makefile rather than in pramas to
> avoid having to duplicate interface files just to have a different
> calling convention for a different platform.
>
> - Darko
>
>
> On 12/02/2008, at 12:21 PM, Jay wrote:
>
>> So I have NOT thought this through.
>>
>> I wonder if "preprocessing" dependent only on "target" is a good
>> idea.
>>
>> Something like either the ability to prefix pragmas with a target,
>> or an "iftarget" and "ifnottarget" pragma.
>>
>> Something like so:
>>
>> <* IF_TARGET NT386 *>
>> <* END_IF_TARGET*>
>>
>>
>> <* IF_TARGET NT386 *>
>> <* END_IF_TARGET*>
>> It's a small can of worms.
>> Where can they be placed? Only at "global" scope? (ie: toplevel in
>> an interface/module).
>>
>> What about IF_OSTYPE?
>> What about expressions?
>> IF_TARGET NT386 OR NTAMD64
>>
>> IF_TARGET STARTS(NT)
>>
>> etc.
>>
>> I don't really have enough interest here to work through this,
>> just sending out the bait...
>>
>> Obviously this was triggered by my happening into the odbc
>> directory and bringing up ignoring WINAPI on non-NT386 or
>> prefixing calling conventions with a target.
>>
>> This reminds me of an important point here however -- nobody else
>> is going to make the mistake of ever having multiple calling
>> conventions. Therefore the generality of prefixing WINAPI with
>> NT386: is useless.
>> Unless Mac68K support is added.
>>
>> And here is some rationale even. The PC and Mac evolved from
>> "small" systems, where assembly programming was common, more
>> people knew more lower level details and playing games with
>> calling conventions was something anyone could do. Most other
>> current systems are rooted in C programming. Working in C, calling
>> conventions are generally in a hidden layer below what anyone
>> thinks about. Therefore, the smaller number of capable people
>> working at that level have the good sense to only have one calling
>> convention. No more systems will evolve from "small", at least not
>> without having observed this history. Therefore, there will no
>> longer be multiple calling conventions.
>>
>> That is my theory at least.
>>
>> Oh, Windows does also have __thiscall and __clrcall. __thiscall is
>> only x86
More information about the M3devel
mailing list