GCC Wikia
Advertisement

このページを編集する際は,編集に関する方針に従ってください.[]

概要[]

実装[]

392 #if !IN_GENGTYPE
~
420 #define VEC(T,A) VEC_##T##_##A
~
422 #else  /* IN_GENGTYPE */
423 #define VEC(T,A) VEC_ T _ A
&color(Silver){424 #define VEC_STRINGIFY(X) VEC_STRINGIFY_(X)};
&color(Silver){425 #define VEC_STRINGIFY_(X) #X};
&color(Silver){426 #undef GTY};
427 #endif /* IN_GENGTYPE */

~

ためしに

 #include "vec.h"
 
 int main()
 {
         VEC(int, double) d;
         VEC(double, int) i;
 
         return 0;
 }

をプリプロセッサに通してみたところ

 # 1 "TEST.c"
 # 1 "<built-in>"
 # 1 "<command line>"
 # 1 "TEST.c"
 # 1 "vec.h" 1
 # 394 "vec.h"
 extern void *vec_gc_p_reserve (void *, int MEM_STAT_DECL);
 extern void *vec_gc_o_reserve (void *, int, size_t, size_t MEM_STAT_DECL);
 extern void ggc_free (void *);
 
 extern void *vec_heap_p_reserve (void *, int MEM_STAT_DECL);
 extern void *vec_heap_o_reserve (void *, int, size_t, size_t MEM_STAT_DECL);
 # 2 "TEST.c" 2
 
 int main()
 {
  VEC_int_double d;
  VEC_double_int i;
 
  return 0;
 }

こうなりました。


リンク元

Advertisement