开发者

Are there differences between the standard C preprocessor and the Objective-C preprocessor?

开发者 https://www.devze.com 2023-03-30 07:50 出处:网络
I can\'t seem to find an answer to this question by Googling. Can I assume that the Objective-C preprocessor works exactly identically to the C preprocessor, and that anything I read about the C prepr

I can't seem to find an answer to this question by Googling. Can I assume that the Objective-C preprocessor works exactly identically to the C preprocessor, and that anything I read about the C preprocessor applies exactly the same way in an Objective C environment? Or are there subtle differen开发者_开发问答ces?


The official documentation from Apple states that Obj-C is a small superset to the language. As far as I can tell, the preprocessor is the same as regular C's (It's all based on the same open-source components, anyway). That's true with the GCC compiler (which is used elsewhere) and related tools; I would assume LLVM is the same as well but I can't speak for the latter.

Of note would be #pragmas, but then again they were meant to be implementation-dependent.


There are some subtle differences:

  • The include paths are different depending on what language you are using.
  • I believe that #import triggers a warning if you're not using ObjC.
  • The preprocessor may have some special cases to handle the ObjC @"string" syntax.
  • And, of course, most importantly, the language affects which macros are predefined (e.g, __objc__).

It's still cpp either way, though -- it's just operating in a different mode.


It's the same preprocessor. You can look at the Clang or GCC source if you want to see for yourself — as far as I can tell, aside from the fact that it uses the Objective-C lexer rather than the C one, it's the same.

0

精彩评论

暂无评论...
验证码 换一张
取 消