Tornando macros C multilinhas legíveis

Tenho brincado com alguma magia macro em C ultimamente, então acabei criando uma macro multilinha muito longa onde tive que colocar o caractere ” no final de cada linha. Muito chato, pois o código era difícil de ler. Seria muito melhor se a barra invertida fosse colocada em uma coluna fixa em cada linha, digamos, na linha 80 (escolha o número que mais lhe convier).

Aqui está um exemplo bobo de uma macro multilinhas:

#define AWESOME_MACRO(class_name, stored_type)

struct class_name
{
stored_type
* data;
};

Eu queria fazer a macro ficar assim:

#define AWESOME_MACRO(class_name, stored_type)                         

struct class_name
{
stored_type
* data;
};

Muito, muito mais legível, especialmente se a macro tiver mais de 200 linhas. Existem 2 maneiras, pelo menos, de fazer isso facilmente, com tecnologia vim e awk. Se você trabalha com o vim, entre no modo de linha visual (V) e selecione as linhas que deseja modificar. Pressione dois pontos e emita o seguinte comando:

s/s*\$/=repeat(' ', 80-col('.')).''

Se você não usa o vim, o awk é seu amigo. Abra o terminal e digite:

awk 'sub(/\$/,"") { $0 = sprintf("%-79s\",$0) } 1' file

Para aplicar as alterações no arquivo usando awk:

awk 'sub(/\$/,"") { $0 = sprintf("%-79s\",$0) } 1' file > file.tmp && mv file.tmp file