Pergunta

Eu tenho um problema com um arquivo incluído simples.

O arquivo que está sendo incluído é em dois programas MFC -. Um dos quais é uma dll, e também compila-se em uma dll não-mfc

Recentemente eu estava usando a dll maior, que envolve em torno da source do dll menor quando eu queria acesso a algumas das características do código original que não é exposto pelo dll maior.

Uma vez que este foi um teste que eu simplesmente acrescentou a fonte ao meu projeto e chamou as funções. Eu tenho esse erro: Erro de sintaxe: em falta ')' antes ';'

O arquivo está corretamente incluído, e eu tenho tanto o CPP eo .h na pasta de origem, e dentro do projeto, mas não compilar.

Eu finalmente criou um projeto muito pequeno teste, main.cpp, spooler.cpp e spooler.h (o spooler é um invólucro em torno dos comms) e tentou compilar isso. Mesmo problema.

Então eu arrancado todo o material relacionado a dll apenas no caso há um problema estranho acontecendo com isso e ele ainda não vai compilar.

Eu não posso pensar na vida de mim o que está errado. Alguém tem alguma idéia?

P.S. Jeff você realmente precisa adicionar a capacidade de anexar arquivos porque a fonte encheria muitas telas com dados.

Foi útil?

Solução

Isto não tem nada a ver com a maneira como você incluir arquivos, é um erro de sintaxe que você começa porque você não fez ( ninho e ) corretamente.

Outras dicas

construir usando a opção / P, que irá criar um arquivo pré-processado (normalmente com a extensão .i).

No Visual Studio, a opção será sobre as propriedades para o projeto em algo como:

C/C++  -  Preprocessor  -   Generate Preprocessed File

Com isso você pode ver exatamente como macros estão sendo ampliadas. Pode ser necessário para executar o arquivo .i através do compilador para encontrar a linha exata que faz com que o erro de sintaxe. Pode ser uma dor de ler o arquivo pré-processado-post, mas ele deve mostrar o que está acontecendo.

Sem a fonte, é difícil ter certeza exatamente o que está acontecendo. A partir da primeira parte da sua pergunta, parece que este código especial compila corretamente no projeto onde foi usado pela primeira vez, mas quando você incluí-lo em seu segundo projeto que compila não mais. Se este é o caso de você querer olhar para o que outros cabeçalhos estão incluídas antes desta. Às vezes, se a sua função ou nomes de variáveis ??são os mesmos como algo definido em outro cabeçalho, especialmente Windows.h, então você pode obter erros de código que anteriormente compilado sem problema.

Se este código tem não compilado corretamente, em seguida, as outras respostas sugerem que você verifique a abertura / fechamento "(" são provavelmente o lugar para começar.

O seu compilador deve dizer-lhe que linha o erro estava. Tente pesquisar para a anterior "(" antes do final da linha.

Você precisa descobrir o que as coisas se expandir para. Em particular, o que é ID_SPOOLER_EVENT? Se ele tem parênteses desequilibradas, que é o seu culpado. Se não, bem, ir com o conselho de Mike B. Isto parece uma questão pré-processador para mim.

O código que está sendo usado:

// the only two includes
#include <windows.h>
#include "spooler.h"
// in WinMain
// create window then...
ShowWindow (hwnd, iCmdShow);
UpdateWindow (hwnd);

SpoolerInitiallize( hwnd, ID_SPOOLER_EVENT ); // <-- our function
...

E sim, eu sei que está escrito de forma errada ea palavra Inicializar esteja escrito incorretamente em toda a documentação também. Infelizmente ele não pode ser mudado assim como nós também fornecemos este dll a terceiros.

Tente o Mike B disse com o pré-processador.

Essa sugestão me fez lembrar por que esse erro parecia tão familiar. Para mim, foi um muito curto #define que estava substituindo um nome de variável com um int literal ou algo parecido. Desagradável.

A execução do código através da preproccessor é assim que eu descobri o que estava acontecendo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top