C ++ CLI é um superconjunto de C ++?
Pergunta
Faria um C ++ CLI O compilador pode compilar alguns grandes conjuntos de classes C ++ sem modificações?
C ++ CLI é um superconjunto de C ++?
Solução
Tecnicamente não, mas, dependendo do padrão do código C ++, você provavelmente ficará bem. Quando você entra em coisas do Windows, pode ter problemas. Compilei o mecanismo de jogo inteiro que usamos no trabalho em C ++/CLI uma vez e funcionou muito bem. Um colega fez o mesmo por todo o Mozilla e não tem tanta sorte.
Outras dicas
De acordo com Wikipedia:
C ++/CLI deve ser pensado como um idioma próprio (com um novo conjunto de palavras-chave, por exemplo), em vez do C ++ Orientado ao Superset C ++ gerenciado
Ainda sou novo com minha curva de aprendizado no C ++/CLI - mas eu mesmo tive a mesma pergunta e o que determinei até agora é que C ++/CLI é, como um idioma, um superconjunto de C ++ padrão.
Se você não usar as extensões da CLI, seu código C ++ acabará como código não gerenciado nativo e deve ser essencialmente o mesmo, mas compilado ao CLR IL, em vez do X86 nativo.
Depois de começar a usar as extensões da CLI (e comece a cair no uso de objetos/alça/classes gerenciadas), você começa a interagir com a plataforma CLR subjacente com mais fortemente. Nesse ponto, essencialmente se torna um novo "idioma" e você terá que separar seu pensamento entre o lado "não gerenciado" e o lado "gerenciado".
C ++/CLI não é um superconjunto de C ++. É um subconjunto com adições. Por exemplo, C ++/CLI não suporta herança múltipla.
Angelo
Página 3 do livro de Marcus Heege 'especialista C ++/cli.net para os estados dos programadores visuais de C ++:
C ++/CLI é um conjunto de extensões feitas no idioma C ++ para se beneficiar dos serviços que uma implementação da CLI oferece.
E mais adiante na mesma página:
C ++/CLI é um superconjunto da linguagem C ++.
Seu excelente livro está disponível gratuitamente aqui.
Consegui compilar a biblioteca QT inteira (que é enorme) como C ++/CLI com menor Modificações (principalmente no ambiente de construção, mas também corrigiu um bug no código -fonte QT)