1717
1818#ifdef __cplusplus /* c++ definitions */
1919
20- const ISC_STATUS isc_facility = 20 ;
21- const ISC_STATUS isc_base = isc_facility << 24 ;
22- const ISC_STATUS isc_factor = 1 ;
23-
24- const ISC_STATUS isc_arg_end = 0 ; // end of argument list
25- const ISC_STATUS isc_arg_gds = 1 ; // generic DSRI status value
26- const ISC_STATUS isc_arg_string = 2 ; // string argument
27- const ISC_STATUS isc_arg_cstring = 3 ; // count & string argument
28- const ISC_STATUS isc_arg_number = 4 ; // numeric argument (long)
29- const ISC_STATUS isc_arg_interpreted = 5 ; // interpreted status code (string)
30- const ISC_STATUS isc_arg_vms = 6 ; // VAX/VMS status code (long)
31- const ISC_STATUS isc_arg_unix = 7 ; // UNIX error code
32- const ISC_STATUS isc_arg_domain = 8 ; // Apollo/Domain error code
33- const ISC_STATUS isc_arg_dos = 9 ; // MSDOS/OS2 error code
34- const ISC_STATUS isc_arg_mpexl = 10 ; // HP MPE/XL error code
35- const ISC_STATUS isc_arg_mpexl_ipc = 11 ; // HP MPE/XL IPC error code
36- const ISC_STATUS isc_arg_next_mach = 15 ; // NeXT/Mach error code
37- const ISC_STATUS isc_arg_netware = 16 ; // NetWare error code
38- const ISC_STATUS isc_arg_win32 = 17 ; // Win32 error code
39- const ISC_STATUS isc_arg_warning = 18 ; // warning argument
40- const ISC_STATUS isc_arg_sql_state = 19 ; // SQLSTATE
20+ #if __cplusplus >= 201703L // C++17 or later
21+ #define FB_STATUS_CONST inline constexpr ISC_STATUS
22+ #else
23+ #define FB_STATUS_CONST const ISC_STATUS
24+ #endif
25+
26+ FB_STATUS_CONST isc_facility = 20 ;
27+ FB_STATUS_CONST isc_base = isc_facility << 24 ;
28+ FB_STATUS_CONST isc_factor = 1 ;
29+
30+ FB_STATUS_CONST isc_arg_end = 0 ; // end of argument list
31+ FB_STATUS_CONST isc_arg_gds = 1 ; // generic DSRI status value
32+ FB_STATUS_CONST isc_arg_string = 2 ; // string argument
33+ FB_STATUS_CONST isc_arg_cstring = 3 ; // count & string argument
34+ FB_STATUS_CONST isc_arg_number = 4 ; // numeric argument (long)
35+ FB_STATUS_CONST isc_arg_interpreted = 5 ; // interpreted status code (string)
36+ FB_STATUS_CONST isc_arg_vms = 6 ; // VAX/VMS status code (long)
37+ FB_STATUS_CONST isc_arg_unix = 7 ; // UNIX error code
38+ FB_STATUS_CONST isc_arg_domain = 8 ; // Apollo/Domain error code
39+ FB_STATUS_CONST isc_arg_dos = 9 ; // MSDOS/OS2 error code
40+ FB_STATUS_CONST isc_arg_mpexl = 10 ; // HP MPE/XL error code
41+ FB_STATUS_CONST isc_arg_mpexl_ipc = 11 ; // HP MPE/XL IPC error code
42+ FB_STATUS_CONST isc_arg_next_mach = 15 ; // NeXT/Mach error code
43+ FB_STATUS_CONST isc_arg_netware = 16 ; // NetWare error code
44+ FB_STATUS_CONST isc_arg_win32 = 17 ; // Win32 error code
45+ FB_STATUS_CONST isc_arg_warning = 18 ; // warning argument
46+ FB_STATUS_CONST isc_arg_sql_state = 19 ; // SQLSTATE
4147
4248#define FB_IMPL_MSG_NO_SYMBOL (facility, number, text )
4349
4450#define FB_IMPL_MSG_SYMBOL (facility, number, symbol, text ) \
45- const ISC_STATUS isc_##symbol = FB_IMPL_MSG_ENCODE(number, FB_IMPL_MSG_FACILITY_##facility);
51+ FB_STATUS_CONST isc_##symbol = FB_IMPL_MSG_ENCODE(number, FB_IMPL_MSG_FACILITY_##facility);
4652
4753#define FB_IMPL_MSG (facility, number, symbol, sqlCode, sqlClass, sqlSubClass, text ) \
4854 FB_IMPL_MSG_SYMBOL (facility, number, symbol, text)
@@ -53,7 +59,7 @@ const ISC_STATUS isc_arg_sql_state = 19; // SQLSTATE
5359#undef FB_IMPL_MSG_SYMBOL
5460#undef FB_IMPL_MSG
5561
56- const ISC_STATUS isc_err_max = 0
62+ FB_STATUS_CONST isc_err_max = 0
5763 #define FB_IMPL_MSG_NO_SYMBOL (facility, number, text )
5864 #define FB_IMPL_MSG_SYMBOL (facility, number, symbol, text )
5965 #define FB_IMPL_MSG (facility, number, symbol, sqlCode, sqlClass, sqlSubClass, text ) + 1
@@ -66,6 +72,8 @@ const ISC_STATUS isc_err_max = 0
6672 ;
6773
6874
75+ #undef FB_STATUS_CONST
76+
6977#else /* c definitions */
7078
7179#define isc_facility 20
0 commit comments