我已经看过libgcc中定义的一些类型。它们显然都映射到了同一个名为bogus_type的类型。我找不到它的定义。

#define SItype bogus_type
#define USItype bogus_type
#define DItype bogus_type
#define UDItype bogus_type
#define SFtype bogus_type
#define DFtype bogus_type

这种类型映射到什么?它是有效的类型还是类似于NULL

最佳答案

Here's another example使用的“类型”。

/* Make sure that we don't accidentally use any normal C language built-in
   type names in the first part of this file.  Instead we want to use *only*
   the type names defined above.  The following macro definitions insure
   that if we *do* accidentally use some normal C language built-in type name,
   we will get a syntax error.  */

#define char bogus_type
#define short bogus_type
#define int bogus_type
#define long bogus_type
#define unsigned bogus_type
#define float bogus_type
#define double bogus_type

也就是说,这不是一种类型。在程序的某些地方强制使用某些类型的限制是合法的代码破坏程序。如果它着火,编译不应该出现语法错误,因为bogus_type不存在。
它不是语言中任何“不为人所知”的部分,只是C预处理器的巧妙使用。

关于c - C语言中的bogus_type是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30895120/

10-10 16:20