diff --git a/gl/stdio.in.h b/gl/stdio.in.h
index 06d9780..fa04a10 100644
--- a/gl/stdio.in.h
+++ b/gl/stdio.in.h
@@ -713,10 +713,13 @@ _GL_CXXALIAS_SYS (gets, char *, (char *s));
 # endif
 _GL_CXXALIASWARN (gets);
 /* It is very rare that the developer ever has full control of stdin,
-   so any use of gets warrants an unconditional warning.  Assume it is
-   always declared, since it is required by C89.  */
+   so any use of gets warrants an unconditional warning; besides C11
+   removed it.  */
+#ifdef gets
+#undef gets
 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
 #endif
+#endif
 
 
 #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
