Se você alguma vez (re?) Usar um número ou string em seu código, não faça isso:
char buffer[4096];
...
snprintf(buffer, 4096, "%s/.%s/%s",
path, argv[0], "v1.0");
...
Em vez disso, use as ferramentas disponíveis! Consulte o valor por um nome em vez de usar a própria constante. Dessa forma, se você quiser alterar o valor, é uma linha fácil. (Também protege você de esquecer de atualizar cada uso e evita edições acidentais quando os valores colidem. Também ajuda a manter todas as suas definições em um só lugar!)
#define BUFFER_SIZE 4096
#define PRODUCT_NAME "program"
#define VERSION_STRING "v0.1"
char buffer[BUFFER_SIZE];
...
snprintf(buffer, BUFFER_SIZE, "%s/.%s/%s",
path, PRODUCT_NAME, VERSION_STRING);
...