Nossa empresa comprará um código-fonte grande e muito complexo para comunicações via satélite. É codificado em C ++ e codificaremos adições, também em C ++, vinculando nosso código ao código comprado em uma única unidade executável.
Parece bom!
É necessário usar o mesmo compilador e a mesma versão do compilador usados para desenvolver o código adquirido?
Falando em geral, não, não é necessário. O objetivo do C ++ é atuar como uma abstração sobre esses tipos de coisas, para que um programa C ++ bem escrito seja compilado tão bem na sua cadeia de ferramentas quanto no autor original, e o programa resultante terá o mesmo resultado. O desempenho pode variar, porque diferentes compiladores são bons em coisas diferentes, mas o comportamento fundamental do programa não deve mudar.
No entanto, o software mal escrito pode depender de um comportamento específico da implementação ou mesmo de um comportamento indefinido. Pode fazer suposições sobre os tipos internos ou sobre a capacidade de endereçamento da plataforma. Mesmo software bem escrito pode não ter escolha, a não ser confiar em extensões não padrão que não estão disponíveis na sua cadeia de ferramentas escolhida, ou pode fazê-lo porque simplesmente não havia necessidade de gastar tempo adicionando uma camada de portabilidade durante o período de o projeto original.
Por fim, você precisará perguntar ao autor / fornecedor para que o código fonte foi escrito. Se eles alegarem que ele foi escrito especificamente contra, por exemplo, o Visual Studio 2015 e exigem recursos da API do Windows, você provavelmente deve ficar com isso. Mas se eles alegam que é portátil, C ++ padrão, use o compilador que desejar. Verifique se o contrato de compra inclui um acordo de suporte para que você possa obter ajuda gratuita quando o fornecedor estiver mentindo.
É necessário usar a mesma versão do C ++ que o código adquirido? Se ele não estiver usando 2014, pode querer usar algumas características do mesmo, mas não se pode haver alguns problemas com mistura de diferentes versões.
Provavelmente. Talvez.
O C ++ 03 é compatível com a maior parte do tempo, portanto, se o código for C ++ 03, é improvável que você tenha um problema. (Embora alguns ajustes possam ser necessários.)
Porém, os recursos introduzidos no C ++ 11 e no C ++ 14 não são compatíveis com versões anteriores, portanto, se o fornecedor usou, digamos, C ++ 11 lambdas, e você tenta criar o código em um compilador C ++ 03, que acabou de ganhar funcione.
Em teoria, é claro, isso não deve importar, especialmente a versão da linguagem, mas é concebível que versões diferentes do compilador gerem código de objeto diferente, levando potencialmente a diferenças de tempo, etc.
Absolutamente. Se o código depende tanto de uma implementação específica para obter os resultados esperados, cabe ao fornecedor ser responsável e informá-lo disso. Como vivemos no mundo real, recomendo ser diligente e pedir a eles primeiro.
E ecoarei o que os outros disseram: garanta que você tenha algum tipo de recurso de apoio, para que, se eles deturpassem alguma das respostas a essas perguntas (intencionalmente ou não), você não acabasse assumindo o custo resultante.