]> git.ozlabs.org Git - ccan/blobdiff - ccan/cast/test/compile_fail-cast_signed-sizesame.c
cast: new limited cast package inspired by Jan Engelhardt's libhx.
[ccan] / ccan / cast / test / compile_fail-cast_signed-sizesame.c
diff --git a/ccan/cast/test/compile_fail-cast_signed-sizesame.c b/ccan/cast/test/compile_fail-cast_signed-sizesame.c
new file mode 100644 (file)
index 0000000..87da721
--- /dev/null
@@ -0,0 +1,28 @@
+#include <ccan/cast/cast.h>
+#include <stdlib.h>
+
+/* Note: this *isn't* sizeof(char) on all platforms. */
+struct char_struct {
+       char c;
+};
+
+int main(int argc, char *argv[])
+{
+       unsigned char *uc;
+#ifdef FAIL
+       struct char_struct
+#else
+       char
+#endif
+               *p = NULL;
+
+       uc = cast_signed(unsigned char *, p);
+
+       return 0;
+}
+
+#ifdef FAIL
+#if !HAVE_TYPEOF||!HAVE_BUILTIN_CHOOSE_EXPR||!HAVE_BUILTIN_TYPES_COMPATIBLE_P
+#error "Unfortunately we don't fail if cast_signed can only use size"
+#endif
+#endif