Como lidar com colisões de símbolos entre bibliotecas vinculadas estaticamente?
ma das regras e práticas recomendadas mais importantes ao escrever uma biblioteca é colocar todos os símbolos da biblioteca em um espaço de nome específico da biblioteca. O C ++ facilita isso, devido aonamespace
palavra-chave. Em C, a abordagem usual é prefixar os identificadores com algum prefixo específico da bibliotec
s regras do padrão C impõem algumas restrições (para compilação segura): Um compilador C pode observar apenas os 8 primeiros caracteres de um identificador, portantfoobar2k_eggs
efoobar2k_spam
pode ser interpretado como o mesmo identificador de forma válida - no entanto, todo compilador moderno permite identificadores longos arbitrários; portanto, em nossos tempos (século 21), não devemos nos preocupar com iss
Mas e se você estiver enfrentando algumas bibliotecas das quais não pode alterar os nomes / identificadores de símbolos? Talvez você tenha apenas um binário estático e os cabeçalhos ou não queira ou não possa se ajustar e recompila