diff --git a/lib/cmock_generator.rb b/lib/cmock_generator.rb
index 6ed5110..0b5d78b 100644
--- a/lib/cmock_generator.rb
+++ b/lib/cmock_generator.rb
@@ -169,6 +169,10 @@ class CMockGenerator
     file << "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n"
     file << "#endif\n"
     file << "\n"
+    file << "#ifdef __cplusplus\n"
+    file << "extern \"C\" {\n"
+    file << "#endif\n"
+    file << "\n"
   end
 
   def create_typedefs(file, mock_project)
@@ -184,6 +188,10 @@ class CMockGenerator
   end
 
   def create_mock_header_footer(header)
+    header << "\n"
+    header << "#ifdef __cplusplus\n"
+    header << "}\n"
+    header << "#endif\n"
     header << "\n"
     header << "#if defined(__GNUC__) && !defined(__ICC) && !defined(__TMS470__)\n"
     header << "#if __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 6 || (__GNUC_MINOR__ == 6 && __GNUC_PATCHLEVEL__ > 0)))\n"
diff --git a/test/unit/cmock_generator_main_test.rb b/test/unit/cmock_generator_main_test.rb
index bb568d4..329d75a 100644
--- a/test/unit/cmock_generator_main_test.rb
+++ b/test/unit/cmock_generator_main_test.rb
@@ -123,6 +123,10 @@ describe CMockGenerator, "Verify CMockGenerator Module" do
       "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
       "#endif\n",
       "\n",
+      "#ifdef __cplusplus\n",
+      "extern \"C\" {\n",
+      "#endif\n",
+      "\n",
     ]
 
     @config.expect :orig_header_include_fmt, "#include \"%s\""
@@ -173,6 +177,10 @@ describe CMockGenerator, "Verify CMockGenerator Module" do
       "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
       "#endif\n",
       "\n",
+      "#ifdef __cplusplus\n",
+      "extern \"C\" {\n",
+      "#endif\n",
+      "\n",
     ]
 
     @config.expect :orig_header_include_fmt, "#include \"%s\""
@@ -217,6 +225,10 @@ describe CMockGenerator, "Verify CMockGenerator Module" do
       "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
       "#endif\n",
       "\n",
+      "#ifdef __cplusplus\n",
+      "extern \"C\" {\n",
+      "#endif\n",
+      "\n",
     ]
 
     @config.expect :orig_header_include_fmt, "#include \"%s\""
@@ -256,6 +268,10 @@ describe CMockGenerator, "Verify CMockGenerator Module" do
       "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
       "#endif\n",
       "\n",
+      "#ifdef __cplusplus\n",
+      "extern \"C\" {\n",
+      "#endif\n",
+      "\n",
     ]
 
     @config.expect :orig_header_include_fmt, "#include \"%s\""
@@ -302,6 +318,10 @@ describe CMockGenerator, "Verify CMockGenerator Module" do
   it "append the proper footer to the header file" do
     output = []
     expected = ["\n",
+                "#ifdef __cplusplus\n",
+                "}\n",
+                "#endif\n",
+                "\n",
                 "#if defined(__GNUC__) && !defined(__ICC) && !defined(__TMS470__)\n",
                 "#if __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 6 || (__GNUC_MINOR__ == 6 && __GNUC_PATCHLEVEL__ > 0)))\n",
                 "#pragma GCC diagnostic pop\n",