diff --git a/src/cpp.c b/src/cpp.c
index 666f2ff679fa04c58f815b16261635b419a2fd66..5e695826bba25cb5b31f0d4161de3c4e56c64f81 100644
--- a/src/cpp.c
+++ b/src/cpp.c
@@ -2268,6 +2268,9 @@ static void insert_callback_define(struct cpp *this,
 			  this->handler, this->compat_handler, 2, 0 ) &&
       TYPEOF(sp[-1]) == T_STRING ) {
     string_builder_shared_strcat(tmp, sp[-1].u.string);
+    string_builder_sprintf(tmp, "\n#line %ld ", (long)this->current_line);
+    insert_current_file_as_string( this,def,args,tmp);
+    string_builder_putchar(tmp, '\n');
     pop_stack();
   }
 }