1 // RUN: %clang -std=c17 %s -o %t && %run %t 2 /// Test __isoc23_* for glibc 2.38+. 3 // RUN: %clang -std=c23 %s -o %t && %run %t 4 5 #include <assert.h> 6 #include <inttypes.h> 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <wchar.h> 10 11 #define TESTL(func) \ 12 { \ 13 char *end; \ 14 long l = (long)func("42", &end, 0); \ 15 assert(l == 42); \ 16 assert(*end == '\0'); \ 17 } 18 19 #define TESTF(func) \ 20 { \ 21 char *end; \ 22 long l = (long)func("42", &end); \ 23 assert(l == 42); \ 24 assert(*end == '\0'); \ 25 } 26 27 #define WTESTL(func) \ 28 { \ 29 wchar_t *end; \ 30 long l = (long)func(L"42", &end, 0); \ 31 assert(l == 42); \ 32 assert(*end == L'\0'); \ 33 } 34 35 #define WTESTF(func) \ 36 { \ 37 wchar_t *end; \ 38 long l = (long)func(L"42", &end); \ 39 assert(l == 42); \ 40 assert(*end == '\0'); \ 41 } 42 main()43int main() { 44 TESTL(strtol); 45 TESTL(strtoll); 46 TESTL(strtoimax); 47 TESTL(strtoul); 48 TESTL(strtoull); 49 TESTL(strtoumax); 50 TESTF(strtof); 51 TESTF(strtod); 52 TESTF(strtold); 53 54 WTESTL(wcstol); 55 WTESTL(wcstoll); 56 WTESTL(wcstoul); 57 WTESTL(wcstoull); 58 WTESTF(wcstof); 59 WTESTF(wcstod); 60 WTESTF(wcstold); 61 } 62