diff --git a/compiler/C_CodeGen.jrag b/compiler/C_CodeGen.jrag
index d3d3976bd423d857f73955140c6c73991dda7542..a6f54aec44e438906e98893c78ec8d8f7b69a5ea 100644
--- a/compiler/C_CodeGen.jrag
+++ b/compiler/C_CodeGen.jrag
@@ -161,6 +161,7 @@ aspect C_CodeGen {
     env.println("");
 
     // Include
+    env.println("#include <stdint.h>");
     env.println("#include \"labcomm.h\"");
     for (int i = 0 ; i < includes.size() ; i++) {
       env.println("#include \"" + includes.get(i) + "\"");
@@ -260,11 +261,14 @@ aspect C_Type {
 
   public void PrimType.C_emitType(C_env env, String name) {
     switch (getToken()) {
-      case LABCOMM_BOOLEAN: { env.print("unsigned char"); } break;
-      case LABCOMM_BYTE: { env.print("unsigned char"); } break;
+      case LABCOMM_BOOLEAN: { env.print("uint8_t"); } break;
+      case LABCOMM_BYTE: { env.print("uint8_t"); } break;
+      case LABCOMM_SHORT: { env.print("int16_t"); } break;
+      case LABCOMM_INT: { env.print("int32_t"); } break;
+      case LABCOMM_LONG: { env.print("int64_t"); } break;
+      case LABCOMM_FLOAT: { env.print("float"); } break;
+      case LABCOMM_DOUBLE: { env.print("double"); } break;
       case LABCOMM_STRING: { env.print("char*"); } break;
-      case LABCOMM_LONG: { env.print("long long"); } break;
-      default: { env.print(getName()); } break;
     }
     env.print(" " + name);
   }