diff --git a/skeletons/OBJECT_IDENTIFIER.c b/skeletons/OBJECT_IDENTIFIER.c
index 0f71307153adc1d633ba5def16b4b725bd15b6fb..216aed832e5a43ca5f52c9fb4eacbf28ffb6d419 100644
--- a/skeletons/OBJECT_IDENTIFIER.c
+++ b/skeletons/OBJECT_IDENTIFIER.c
@@ -509,9 +509,13 @@ OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, void *arcs, unsigned int ar
 	 * These require special treatment.
 	 */
 	{
+		uint8_t *tp;
+#ifdef	__GNUC__
 		uint8_t first_value[1 + arc_type_size];	/* of two arcs */
+#else
+		uint8_t *first_value = alloca(1 + arc_type_size);
+#endif
 		uint8_t *fv = first_value;
-		uint8_t *tp;
 
 		/*
 		 * Simulate first_value = arc0 * 40 + arc1;