diff --git a/src/c_wrapper/clhelper.h b/src/c_wrapper/clhelper.h
index 0d8f630444a3a14ea285108117211e85487d7fcd..2fb6cfd2bb50805afd53154f49c82958bc228552 100644
--- a/src/c_wrapper/clhelper.h
+++ b/src/c_wrapper/clhelper.h
@@ -67,8 +67,8 @@ make_cloutarg(clobj_t *ret, cl_int (CL_API_CALL *release)(typename CLObj::cl_typ
 {
     return _CLObjOutArg<CLObj, T...>(ret, release, name, t1...);
 }
-#define pyopencl_outarg(type, ret, func, args...)               \
-    make_cloutarg<type>(ret, func, #func, ##args)
+#define pyopencl_outarg(type, ret, func, ...)               \
+    make_cloutarg<type>(ret, func, #func, ##__VA_ARGS__)
 
 // {{{ GetInfo helpers
 
@@ -83,8 +83,8 @@ get_vec_info(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name,
     call_guarded(func, name, args..., size_arg(buf), buf_arg(size));
     return buf;
 }
-#define pyopencl_get_vec_info(type, what, args...)                      \
-    get_vec_info<type>(clGet##what##Info, "clGet" #what "Info", args)
+#define pyopencl_get_vec_info(type, what, ...)                      \
+    get_vec_info<type>(clGet##what##Info, "clGet" #what "Info", __VA_ARGS__)
 
 template<typename T>
 PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info
@@ -109,8 +109,8 @@ convert_array_info(const char *tname, pyopencl_buf<T> &&_buf)
 
 #define pyopencl_convert_array_info(type, buf)          \
     convert_array_info<type>(#type, buf)
-#define pyopencl_get_array_info(type, what, args...)                    \
-    pyopencl_convert_array_info(type, pyopencl_get_vec_info(type, what, args))
+#define pyopencl_get_array_info(type, what, ...)                    \
+    pyopencl_convert_array_info(type, pyopencl_get_vec_info(type, what, __VA_ARGS__))
 
 template<typename CLObj, typename T>
 PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info
@@ -123,9 +123,9 @@ convert_opaque_array_info(T &&buf)
     info.value = buf_to_base<CLObj>(std::forward<T>(buf)).release();
     return info;
 }
-#define pyopencl_get_opaque_array_info(cls, what, args...)  \
+#define pyopencl_get_opaque_array_info(cls, what, ...)  \
     convert_opaque_array_info<cls>(               \
-        pyopencl_get_vec_info(cls::cl_type, what, args))
+        pyopencl_get_vec_info(cls::cl_type, what, __VA_ARGS__))
 
 template<typename CLObj, typename... ArgTypes, typename... ArgTypes2>
 PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info
@@ -145,9 +145,9 @@ get_opaque_info(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name,
     }
     return info;
 }
-#define pyopencl_get_opaque_info(clobj, what, args...)              \
+#define pyopencl_get_opaque_info(clobj, what, ...)              \
     get_opaque_info<clobj>(clGet##what##Info,             \
-                                     "clGet" #what "Info", args)
+                                     "clGet" #what "Info", __VA_ARGS__)
 
 template<typename... ArgTypes, typename... ArgTypes2>
 PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info
@@ -165,8 +165,8 @@ get_str_info(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name,
     info.value = (void*)param_value.release();
     return info;
 }
-#define pyopencl_get_str_info(what, args...)                            \
-    get_str_info(clGet##what##Info, "clGet" #what "Info", args)
+#define pyopencl_get_str_info(what, ...)                            \
+    get_str_info(clGet##what##Info, "clGet" #what "Info", __VA_ARGS__)
 
 template<typename T, typename... ArgTypes, typename... ArgTypes2>
 PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info
@@ -182,9 +182,9 @@ get_int_info(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name,
     info.value = cl_memdup(&value);
     return info;
 }
-#define pyopencl_get_int_info(type, what, args...)                      \
+#define pyopencl_get_int_info(type, what, ...)                      \
     get_int_info<type>(clGet##what##Info, "clGet" #what "Info", \
-                                 #type "*", args)
+                                 #type "*", __VA_ARGS__)
 
 // }}}
 
@@ -200,8 +200,8 @@ convert_obj(cl_int (CL_API_CALL *clRelease)(CLType), const char *name, CLType cl
         throw;
     }
 }
-#define pyopencl_convert_obj(type, func, args...)       \
-    convert_obj<type>(func, #func, args)
+#define pyopencl_convert_obj(type, func, ...)       \
+    convert_obj<type>(func, #func, __VA_ARGS__)
 
 // {{{ extension function pointers
 
diff --git a/src/c_wrapper/error.h b/src/c_wrapper/error.h
index bae569bb459d640d56e5cd2eb7d4d9a6e572321c..30090188399c9fdd1fb54b855379a29c27c5d4d2 100644
--- a/src/c_wrapper/error.h
+++ b/src/c_wrapper/error.h
@@ -251,8 +251,8 @@ call_guarded(T (CL_API_CALL *func)(ArgTypes...), const char *name, ArgTypes2&&..
     argpack.finish();
     return res;
 }
-#define pyopencl_call_guarded(func, args...)    \
-    call_guarded(func, #func, args)
+#define pyopencl_call_guarded(func, ...)    \
+    call_guarded(func, #func, __VA_ARGS__)
 
 static PYOPENCL_INLINE void
 cleanup_print_error(cl_int status_code, const char *name) noexcept
@@ -275,8 +275,8 @@ call_guarded_cleanup(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name,
         argpack.finish();
     }
 }
-#define pyopencl_call_guarded_cleanup(func, args...)    \
-    call_guarded_cleanup(func, #func, args)
+#define pyopencl_call_guarded_cleanup(func, ...)    \
+    call_guarded_cleanup(func, #func, __VA_ARGS__)
 
 template<typename Func>
 PYOPENCL_USE_RESULT static PYOPENCL_INLINE error*
diff --git a/src/c_wrapper/wrap_constants.cpp b/src/c_wrapper/wrap_constants.cpp
index ae2980e97f9e5d4674982696f057b49e97aa48ba..1a0245505acbc9397af494b8dda17dbd71277b1f 100644
--- a/src/c_wrapper/wrap_constants.cpp
+++ b/src/c_wrapper/wrap_constants.cpp
@@ -10,8 +10,8 @@ void populate_constants(void(*add)(const char*, const char*, int64_t value))
 {
 #define _ADD_ATTR(TYPE, PREFIX, NAME, SUFFIX, ...)      \
       add(TYPE, #NAME, CL_##PREFIX##NAME##SUFFIX)
-#define ADD_ATTR(TYPE, PREFIX, NAME, EXTRA...)  \
-      _ADD_ATTR(TYPE, PREFIX, NAME, EXTRA)
+#define ADD_ATTR(TYPE, PREFIX, NAME, ...)  \
+      _ADD_ATTR(TYPE, PREFIX, NAME, __VA_ARGS__)
 
     // program_kind
     add("program_kind", "UNKNOWN", KND_UNKNOWN);