In this case, "work" means "fail to compile cleanly".
@@ -10,6 +10,9 @@ int check_parameter(const struct foo array[4])
{
#ifdef FAIL
return (ARRAY_SIZE(array) == 4);
+#if !HAVE_TYPEOF || !HAVE_BUILTIN_TYPES_COMPATIBLE_P
+#error "Unfortunately we don't fail if _array_size_chk is a noop."
+#endif
#else
return sizeof(array) == 4 * sizeof(struct foo);
#endif