Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
o caminho de inclusão relativo contém '..'
Observações
Uma #include diretiva tem um caminho que inclui um especificador de diretório pai (um .. segmento de caminho).
No Visual Studio 2015 Update 1 e versões posteriores, se habilitado, o compilador pode detetar e emitir um aviso para uma #include diretiva que contém um segmento de caminho de diretório pai (..). Às vezes, é escrito código que usa caminhos relativos ao diretório pai para incluir cabeçalhos de bibliotecas externas. Quando esses caminhos de cabeçalho relativos ao diretório pai são especificados em arquivos de origem, isso cria um risco: o programa pode ser compilado incluindo um arquivo de cabeçalho diferente do que o programador pretende. Esses caminhos relativos podem não ser portáteis para ambientes de compilação de outros desenvolvedores.
Em vez disso, recomendamos especificar os caminhos para esses cabeçalhos no ambiente de compilação, como na variável de ambiente INCLUDE ou em parâmetros para a opção do compilador /I (Diretórios adicionais de inclusão). No IDE do Visual Studio, você pode definir os caminhos na página de propriedades Configuration Properties>C/C++>General do seu projeto, na propriedade Additional Include Directories . Embora não haja um aviso específico para isso, também não recomendamos a utilização de segmentos de caminho do diretório pai ao especificar os diretórios de inclusão do seu projeto.
Aviso C4464 é novo no Visual Studio 2015 Atualização 1 e está desativado por padrão. Use /Wall para ativar todos os avisos que estão desativados por padrão. Use /wN4464 para ativar C4464 como um aviso de nível N (onde N é 1-4). Para obter mais informações, consulte Avisos do compilador que estão desativados por padrão. Para obter informações sobre como desativar avisos introduzidos em ou após uma versão específica do compilador, consulte Avisos do compilador por versão do compilador.
Example
Os arquivos de código-fonte que usam .. segmentos de caminho em #include diretivas podem disparar esse aviso quando C4464 está habilitado ou quando a /Wall opção é especificada.
Neste exemplo, a fonte do projeto está dentro C:\project\source e os arquivos de cabeçalho de uma biblioteca externa estão em C:\other_lib\headers:
// C:\project\source\C4464.cpp
// Compile by using: cl /w14464 C4464.cpp
#include "..\..\other_lib\headers\other.h" // C4464
#include "..\..\other_lib\headers\extras\nested.h" // C4464
// . . .
Para corrigir esse problema, adicione o caminho C:\other_lib\headers para os diretórios de inclusão do seu projeto. Em seguida, altere a origem para incluir os arquivos de cabeçalho como cabeçalhos externos:
// C:\project\source\C4464b.cpp
// Compile by using: cl /w14464 /I"C:\other_lib\headers" C4464b.cpp
#include <other.h> // OK
#include <extras\nested.h> // OK
// . . .