Use C11 _Static_assert where available.

OPENSSL_COMPILE_ASSERT implements a static assertion, but the error
message is a little weird because it's a hack around the fact that C,
traditionally, doesn't have static assertions.

C11 now does have _Static_assert (a.k.a. static_assert when one includes
assert.h) so we can use that when provided to get cleaner error
messages.

Change-Id: Ia3625dfb2988de11fd95ddba957f118c0d3183ff
Reviewed-on: https://boringssl-review.googlesource.com/4770
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/include/openssl/type_check.h b/include/openssl/type_check.h
index dd59151..5c0360a 100644
--- a/include/openssl/type_check.h
+++ b/include/openssl/type_check.h
@@ -76,8 +76,12 @@
  * was a pointer to |type|. */
 #define CHECKED_PTR_OF(type, p) CHECKED_CAST(void*, type*, (p))
 
+#if __STDC_VERSION__ >= 201112L
+#define OPENSSL_COMPILE_ASSERT(cond, msg) _Static_assert(cond, #msg)
+#else
 #define OPENSSL_COMPILE_ASSERT(cond, msg) \
   typedef char OPENSSL_COMPILE_ASSERT_##msg[((cond) ? 1 : -1)]
+#endif
 
 
 #if defined(__cplusplus)