From 89710916cfa82f50be0092347744a5e06a3b5420 Mon Sep 17 00:00:00 2001 From: lemon Date: Fri, 12 Sep 2025 17:10:35 +0200 Subject: c: function-local static vars --- test/pp.c | 5 +++-- test/pp.h | 3 +++ test/reloc.c | 7 +++++++ test/test3.c | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 test/reloc.c (limited to 'test') diff --git a/test/pp.c b/test/pp.c index f850c08..1c1549f 100644 --- a/test/pp.c +++ b/test/pp.c @@ -5,7 +5,8 @@ int main(void) { - printf("%s\n",STR ( ok /1 "\n"\n ;.& - 05.5)); + printf("%s %s\n",STR ( ok /1 "\n"n ;.& + 05.5), STR(ADD(1,2))); hi(ADD(Foo, SQR(Bar+1))); + printf("%s %s\n", str(Foo), xstr(Foo)); } diff --git a/test/pp.h b/test/pp.h index 5ac7aac..029c6ee 100644 --- a/test/pp.h +++ b/test/pp.h @@ -16,6 +16,9 @@ void hi(int x) { #define ADD(a,b) (a)+(b) #define STR(h) #h +#define xstr(s1) str(s1) +#define str(s) #s + #endif extern int printf(const char *, ...); diff --git a/test/reloc.c b/test/reloc.c new file mode 100644 index 0000000..70cba28 --- /dev/null +++ b/test/reloc.c @@ -0,0 +1,7 @@ + + +float get_value(unsigned x) +{ + static const float values [] = {1.1f, 1.2f, 1.3f, 1.4f}; + return x < 4 ? values[x] : 0.0f; +} diff --git a/test/test3.c b/test/test3.c index a5d165f..b99a543 100644 --- a/test/test3.c +++ b/test/test3.c @@ -27,7 +27,7 @@ struct bitset { unsigned long long u; }; void bscopy(struct bitset dst[/*siz*/], const struct bitset src[/*siz*/], unsigned siz) { - while (siz--) dst++->u = src++->u; + for (; siz; --siz, ++dst, ++src) dst->u = src->u; } -- cgit v1.2.3