[libdispatch-dev] libdispatch with Visual Studio

Jordan K. Hubbard jkh at apple.com
Fri Apr 15 16:55:01 PDT 2011

[ Adding Kevin explicitly to this discussion ]

On Apr 15, 2011, at 12:04 PM, Brent Fulgham wrote:

> I spent a few minutes yesterday playing with the libdispatch sources
> to see how far I could get building under Visual Studio.  As expected,
> it choked when presented with various useful gcc extensions, such as
> named structure initializers, differences in macro handling, and so
> forth.
> All of these differences are fairly easily resolved, with the
> exception of the gcc-specific 'typeof' operator.  I'm not sure how to
> provide similar behavior under the Visual C++ compiler, as I don't
> think it has a mechanism to determine the static type of an expression
> at runtime.
> Can anyone comment on how this is resolved for the Apple build of
> libdispatch (i.e., the version that ships with Safari/WebKit)?

Hi Brent,

I think (but can't say for sure) that this may be a job for clang, specifically the -rewrite-objc flag.  You can see some discussion on it here:  http://lists.apple.com/archives/objc-language/2009/Apr/msg00030.html

I'm not intimately familiar with how it's used by the Windows port, but I believe the general idea is to rewrite the blocks and other extensions into a dialect of C that is vanilla enough for Visual Studio to process.  I'll defer to Kevin on the details and whether or not there is an actual merit to this approach or if it's only useful for a limited number of scenarios, but this snippet alone may be enough to get your investigations pointed in the right direction!

- Jordan

More information about the libdispatch-dev mailing list