#include <iostream>
#include <limits>
#include <string>
#include <stdio.h>

std::string itos(int n)
{
   const int max_size = std::numeric_limits<int>::digits10 + 1 /*sign*/ + 1 /*0-terminator*/;
   char buffer[max_size] = {0};
   sprintf(buffer, "%d", n);
   return std::string(buffer);
}

#define HERE (std::string(__FILE__) + "(" + itos(__LINE__) + "): ")

int main()
{
    std::cout << HERE + "Hello world" << std::endl;
}