diff --git a/bind/genobjc.go b/bind/genobjc.go
index 44e178b..1470b56 100644
--- a/bind/genobjc.go
+++ b/bind/genobjc.go
@@ -546,7 +546,11 @@
 	for _, p := range s.retParams[skip:] {
 		params = append(params, g.objcType(p.typ)+"* "+p.name)
 	}
-	return fmt.Sprintf("%s %s%s(%s)", s.ret, g.namePrefix, s.name, strings.Join(params, ", "))
+	paramContents := "void"
+	if len(params) > 0 {
+		paramContents = strings.Join(params, ", ")
+	}
+	return fmt.Sprintf("%s %s%s(%s)", s.ret, g.namePrefix, s.name, paramContents)
 }
 
 func (s *funcSummary) asMethod(g *ObjcGen) string {
diff --git a/bind/testdata/customprefix.objc.h.golden b/bind/testdata/customprefix.objc.h.golden
index 4169f6a..8e098b4 100644
--- a/bind/testdata/customprefix.objc.h.golden
+++ b/bind/testdata/customprefix.objc.h.golden
@@ -10,6 +10,6 @@
 #include "Universe.objc.h"
 
 
-FOUNDATION_EXPORT void CustomprefixF();
+FOUNDATION_EXPORT void CustomprefixF(void);
 
 #endif
diff --git a/bind/testdata/customprefix.objc.m.golden b/bind/testdata/customprefix.objc.m.golden
index 4db7753..f7b6433 100644
--- a/bind/testdata/customprefix.objc.m.golden
+++ b/bind/testdata/customprefix.objc.m.golden
@@ -9,7 +9,7 @@
 #include "Customprefix.objc.h"
 
 
-void CustomprefixF() {
+void CustomprefixF(void) {
     proxycustomprefix__F();
 }
 
diff --git a/bind/testdata/customprefixEX.objc.h.golden b/bind/testdata/customprefixEX.objc.h.golden
index 9bec10c..167d4cc 100644
--- a/bind/testdata/customprefixEX.objc.h.golden
+++ b/bind/testdata/customprefixEX.objc.h.golden
@@ -10,6 +10,6 @@
 #include "Universe.objc.h"
 
 
-FOUNDATION_EXPORT void EXCustomprefixF();
+FOUNDATION_EXPORT void EXCustomprefixF(void);
 
 #endif
diff --git a/bind/testdata/customprefixEX.objc.m.golden b/bind/testdata/customprefixEX.objc.m.golden
index 90c7f28..db708cc 100644
--- a/bind/testdata/customprefixEX.objc.m.golden
+++ b/bind/testdata/customprefixEX.objc.m.golden
@@ -9,7 +9,7 @@
 #include "EXCustomprefix.objc.h"
 
 
-void EXCustomprefixF() {
+void EXCustomprefixF(void) {
     proxycustomprefix__F();
 }
 
diff --git a/bind/testdata/doc.objc.h.golden b/bind/testdata/doc.objc.h.golden
index c417fa8..bc2a2e8 100644
--- a/bind/testdata/doc.objc.h.golden
+++ b/bind/testdata/doc.objc.h.golden
@@ -110,12 +110,12 @@
 /**
  * F is a function.
  */
-FOUNDATION_EXPORT void DocF();
+FOUNDATION_EXPORT void DocF(void);
 
 /**
  * NewS is a constructor.
  */
-FOUNDATION_EXPORT DocS* DocNewS();
+FOUNDATION_EXPORT DocS* DocNewS(void);
 
 @class DocI;
 
diff --git a/bind/testdata/doc.objc.m.golden b/bind/testdata/doc.objc.m.golden
index d7c00df..9d6dd5d 100644
--- a/bind/testdata/doc.objc.m.golden
+++ b/bind/testdata/doc.objc.m.golden
@@ -202,11 +202,11 @@
 @end
 
 
-void DocF() {
+void DocF(void) {
 	proxydoc__F();
 }
 
-DocS* DocNewS() {
+DocS* DocNewS(void) {
 	int32_t r0 = proxydoc__NewS();
 	DocS* _ret0_ = nil;
 	GoSeqRef* _ret0__ref = go_seq_from_refnum(r0);
diff --git a/bind/testdata/interfaces.objc.h.golden b/bind/testdata/interfaces.objc.h.golden
index 3962a89..ca5c7a4 100644
--- a/bind/testdata/interfaces.objc.h.golden
+++ b/bind/testdata/interfaces.objc.h.golden
@@ -76,7 +76,7 @@
 
 FOUNDATION_EXPORT BOOL InterfacesCallErr(id<InterfacesError> e, NSError** error);
 
-FOUNDATION_EXPORT id<InterfacesI> InterfacesSeven();
+FOUNDATION_EXPORT id<InterfacesI> InterfacesSeven(void);
 
 @class InterfacesError;
 
diff --git a/bind/testdata/interfaces.objc.m.golden b/bind/testdata/interfaces.objc.m.golden
index 628ff8e..7b5e1d9 100644
--- a/bind/testdata/interfaces.objc.m.golden
+++ b/bind/testdata/interfaces.objc.m.golden
@@ -214,7 +214,7 @@
 	return (_error == nil);
 }
 
-id<InterfacesI> InterfacesSeven() {
+id<InterfacesI> InterfacesSeven(void) {
 	int32_t r0 = proxyinterfaces__Seven();
 	InterfacesI* _ret0_ = nil;
 	GoSeqRef* _ret0__ref = go_seq_from_refnum(r0);
diff --git a/bind/testdata/try.objc.h.golden b/bind/testdata/try.objc.h.golden
index e236205..f5c9a48 100644
--- a/bind/testdata/try.objc.h.golden
+++ b/bind/testdata/try.objc.h.golden
@@ -10,6 +10,6 @@
 #include "Universe.objc.h"
 
 
-FOUNDATION_EXPORT NSString* TryThis();
+FOUNDATION_EXPORT NSString* TryThis(void);
 
 #endif
diff --git a/bind/testdata/try.objc.m.golden b/bind/testdata/try.objc.m.golden
index 990a81f..8c6d281 100644
--- a/bind/testdata/try.objc.m.golden
+++ b/bind/testdata/try.objc.m.golden
@@ -9,7 +9,7 @@
 #include "Try.objc.h"
 
 
-NSString* TryThis() {
+NSString* TryThis(void) {
 	nstring r0 = proxytry__This();
 	NSString *_ret0_ = go_seq_to_objc_string(r0);
 	return _ret0_;
diff --git a/cmd/gobind/doc.go b/cmd/gobind/doc.go
index f15466c..32965b5 100644
--- a/cmd/gobind/doc.go
+++ b/cmd/gobind/doc.go
@@ -79,7 +79,7 @@
 	- (void)setValue:(int64_t)v;
 	@end
 
-	FOUNDATION_EXPORT GoMypkgCounter* GoMypkgNewCounter();
+	FOUNDATION_EXPORT GoMypkgCounter* GoMypkgNewCounter(void);
 
 The equivalent of calling newCounter in Go is GoMypkgNewCounter in Objective-C.
 The returned GoMypkgCounter* holds a reference to an underlying Go
