diff --git a/c/configure.in b/c/configure.in
index 4bc7e3e5..1cacbc46 100644
--- a/c/configure.in
+++ b/c/configure.in
@@ -1,4 +1,4 @@
-AC_INIT(pack.h)
+AC_INIT(pack.c)
 AM_INIT_AUTOMAKE(msgpackc, 0.1.0)
 AC_CONFIG_HEADER(config.h)
 
diff --git a/c/pack_inline.h b/c/pack_inline.h
index acd96fa6..dd43a20e 100644
--- a/c/pack_inline.h
+++ b/c/pack_inline.h
@@ -18,7 +18,7 @@
 #ifndef PACK_INLINE_H__
 #define PACK_INLINE_H__
 
-#include "pack.h"
+#include "msgpack/pack.h"
 
 typedef msgpack_pack_t* msgpack_pack_context;
 
diff --git a/c/unpack.c b/c/unpack.c
index 012888e8..a2fc0660 100644
--- a/c/unpack.c
+++ b/c/unpack.c
@@ -15,7 +15,7 @@
  *    See the License for the specific language governing permissions and
  *    limitations under the License.
  */
-#include "unpack.h"
+#include "msgpack/unpack.h"
 #include "unpack_context.h"
 #include <stdlib.h>
 
diff --git a/c/unpack_context.h b/c/unpack_context.h
index 7337c9e0..d7b03883 100644
--- a/c/unpack_context.h
+++ b/c/unpack_context.h
@@ -18,7 +18,7 @@
 #ifndef UNPACK_CONTEXT_H__
 #define UNPACK_CONTEXT_H__
 
-#include "unpack.h"
+#include "msgpack/unpack.h"
 
 typedef void* msgpack_object;
 
diff --git a/cpp/Makefile.am b/cpp/Makefile.am
index b9ecb1d2..d1fa826e 100644
--- a/cpp/Makefile.am
+++ b/cpp/Makefile.am
@@ -14,7 +14,8 @@ nobase_include_HEADERS = \
 		msgpack/zone.hpp
 
 noinst_HEADERS = \
-		unpack_context.hpp
+		unpack_context.hpp \
+		msgpack/zone.hpp.erb
 
 msgpack/zone.hpp: msgpack/zone.hpp.erb
 	erb $< > $@
diff --git a/cpp/configure.in b/cpp/configure.in
index e9e21ea1..5126be46 100644
--- a/cpp/configure.in
+++ b/cpp/configure.in
@@ -1,4 +1,4 @@
-AC_INIT(object.hpp)
+AC_INIT(object.cpp)
 AM_INIT_AUTOMAKE(msgpack, 0.1.0)
 AC_CONFIG_HEADER(config.h)
 
diff --git a/cpp/object.hpp b/cpp/object.hpp
index 9f91677a..456210c7 100644
--- a/cpp/object.hpp
+++ b/cpp/object.hpp
@@ -232,7 +232,7 @@ INTEGER_CLASS(int16_t, i16)
 INTEGER_CLASS(int32_t, i32)
 INTEGER_CLASS(int64_t, i64)
 
-#undef INTEGER_CLASS(TYPE, NAME)
+#undef INTEGER_CLASS
 
 
 #define FLOAT_CLASS(TYPE, NAME) \
@@ -260,7 +260,7 @@ private:													\
 FLOAT_CLASS(float, float)
 FLOAT_CLASS(double, double)
 
-#undef FLOAT_CLASS(TYPE, NAME)
+#undef FLOAT_CLASS
 
 
 #define RAW_CLASS(NAME, TYPE, EXTRA) \
@@ -281,7 +281,7 @@ private:																\
 RAW_CLASS(mutable_raw_ref, char*, /*mutable_raw xraw();*/ raw xraw() const; )
 RAW_CLASS(raw_ref, const char*, raw xraw() const; )
 
-#undef RAW_CLASS(NAME, TYPE, EXTRA)
+#undef RAW_CLASS
 
 
 struct object_array : object_class, object_container_mixin {
diff --git a/cpp/zone.cpp b/cpp/zone.cpp
index ff22fc3e..4cc50d71 100644
--- a/cpp/zone.cpp
+++ b/cpp/zone.cpp
@@ -15,7 +15,7 @@
 //    See the License for the specific language governing permissions and
 //    limitations under the License.
 //
-#include "zone.hpp"
+#include "msgpack/zone.hpp"
 
 namespace msgpack {
 
diff --git a/msgpack/pack/inline_impl.h b/msgpack/pack/inline_impl.h
index d4d5a5a1..635b6974 100644
--- a/msgpack/pack/inline_impl.h
+++ b/msgpack/pack/inline_impl.h
@@ -52,7 +52,7 @@
 
 #endif
 
-#ifndef msgpack_pack_inline_func(name)
+#ifndef msgpack_pack_inline_func
 #define msgpack_pack_inline_func(name) \
 	inline void msgpack_pack_##name
 #endif
@@ -293,11 +293,11 @@ msgpack_pack_inline_func(raw)(msgpack_pack_context x, const void* b, size_t l)
 }
 
 
-#undef msgpack_pack_inline_func(name)
+#undef msgpack_pack_inline_func
 
-#undef STORE_BE16(d)
-#undef STORE_BE32(d)
-#undef STORE_BE64(d)
+#undef STORE_BE16
+#undef STORE_BE32
+#undef STORE_BE64
 
 #endif /* msgpack/pack/inline_impl.h */
 
diff --git a/msgpack/unpack/inline_impl.h b/msgpack/unpack/inline_impl.h
index 443a40cb..a6557f9a 100644
--- a/msgpack/unpack/inline_impl.h
+++ b/msgpack/unpack/inline_impl.h
@@ -175,6 +175,7 @@ int msgpack_unpacker_execute(msgpack_unpacker* ctx, const char* data, size_t len
 	msgpack_unpack_context* user = &ctx->user;
 
 	msgpack_object obj;
+	msgpack_unpacker_stack* c = NULL;
 
 	int ret;
 
@@ -381,7 +382,7 @@ int msgpack_unpacker_execute(msgpack_unpacker* ctx, const char* data, size_t len
 
 _push:
 	if(top == 0) { goto _finish; }
-	msgpack_unpacker_stack* c = &stack[top-1];
+	c = &stack[top-1];
 	switch(c->ct) {
 	case CT_ARRAY_ITEM:
 		msgpack_unpack_array_item(user, c->obj, obj);
@@ -444,16 +445,16 @@ _end:
 }
 
 
-#ifdef betoh16(x)
-#undef betoh16(x)
+#ifdef betoh16
+#undef betoh16
 #endif
 
-#ifdef betoh32(x)
-#undef betoh32(x)
+#ifdef betoh32
+#undef betoh32
 #endif
 
-#ifdef betoh64(x)
-#undef betoh64(x)
+#ifdef betoh64
+#undef betoh64
 #endif
 
 #ifdef __cplusplus