Tôi muốn làm điều gì đó trong C99 một cách, nếu không để thực hiện theo cách khác. #define
là gì để kiểm tra?Có #define cho C99 không?
#ifdef C99
...
#else
...
#endif
Tôi muốn làm điều gì đó trong C99 một cách, nếu không để thực hiện theo cách khác. #define
là gì để kiểm tra?Có #define cho C99 không?
#ifdef C99
...
#else
...
#endif
Không có giá trị #define
cụ thể. Chỉ cần kiểm tra __STDC_VERSION__
và tự xác định! ;-)
#if __STDC_VERSION__ >= 199901L
/* C99 code */
#define C99
#else
/* Not C99 code */
#endif
#ifdef C99
/*My code in C99 format*/
#else
/*My code in C99 format*/
#endif
EDIT: Một đoạn tổng quát hơn, from here. Tôi vừa mới thay đổi tên đã xác định, chỉ trong trường hợp bạn sẽ sử dụng chúng rất nhiều trên mã:
#if defined(__STDC__)
# define C89
# if defined(__STDC_VERSION__)
# define C90
# if (__STDC_VERSION__ >= 199409L)
# define C94
# endif
# if (__STDC_VERSION__ >= 199901L)
# define C99
# endif
# endif
#endif
Có thể đã thêm một thử nghiệm cho C11 ngay bây giờ. – chux
#if __STDC_VERSION__ == 199901L
/* C99 */
#else
/* not C99 */
#endif
Thay đổi ==
->=
nếu bạn muốn kiểm tra cho C99 và sau đó.
Thuật ngữ nitpick: Điều gì mới gọi là #define, gurus gọi macro * hoặc (* macro mã định danh * khi chúng cụ thể tham chiếu đến thingy cần được thay thế). – Jens