patch 8.2.2448: compilation error with Ruby 3.0

Problem:    Compilation error with Ruby 3.0.
Solution:   Adjust #ifdefs and declaration. (Ken Takata, closes #7761)
diff --git a/src/if_ruby.c b/src/if_ruby.c
index a8c8379..1d49d67 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -436,7 +436,7 @@
 static VALUE (*dll_rb_inspect) (VALUE);
 static VALUE (*dll_rb_int2inum) (long);
 static ID (*dll_rb_intern) (const char*);
-# if VIM_SIZEOF_INT < VIM_SIZEOF_LONG // 64 bits only
+# if RUBY_VERSION >= 30 || VIM_SIZEOF_INT < VIM_SIZEOF_LONG
 static long (*dll_rb_fix2int) (VALUE);
 static long (*dll_rb_num2int) (VALUE);
 static unsigned long (*dll_rb_num2uint) (VALUE);
@@ -524,7 +524,11 @@
 # endif
 
 # if RUBY_VERSION >= 30
+#  ifdef _MSC_VER
+static void (*dll_ruby_malloc_size_overflow)(size_t, size_t);
+#  else
 NORETURN(static void (*dll_ruby_malloc_size_overflow)(size_t, size_t));
+#  endif
 # endif
 
 # if RUBY_VERSION >= 26
@@ -554,7 +558,7 @@
 {
     return dll_rb_int2big(x);
 }
-#   if VIM_SIZEOF_INT < VIM_SIZEOF_LONG
+#   if RUBY_VERSION >= 30 || VIM_SIZEOF_INT < VIM_SIZEOF_LONG
     long
 rb_fix2int_stub(VALUE x)
 {
@@ -612,13 +616,11 @@
 {
     dll_rb_check_type(obj, t);
 }
-#   if VIM_SIZEOF_INT < VIM_SIZEOF_LONG // 64 bits only
     unsigned long
 rb_num2uint_stub(VALUE x)
 {
     return dll_rb_num2uint(x);
 }
-#   endif
     void
 ruby_malloc_size_overflow_stub(size_t x, size_t y)
 {
@@ -695,7 +697,7 @@
     {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect},
     {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum},
     {"rb_intern", (RUBY_PROC*)&dll_rb_intern},
-# if VIM_SIZEOF_INT < VIM_SIZEOF_LONG // 64 bits only
+# if RUBY_VERSION >= 30 || VIM_SIZEOF_INT < VIM_SIZEOF_LONG
     {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int},
     {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int},
     {"rb_num2uint", (RUBY_PROC*)&dll_rb_num2uint},