2016-04-28 14 views
-2

Ich habe 3 Dateien:Passing Argumente durch Bezugnahme in Header-Datei

file1.h

#ifndef FILE_H_INCLUDED 
#define FILE_H_INCLUDED 

#include <stdbool.h> // To prevent unknown type 'bool' error 
bool parse(char** &buffer); 

#endif 

file1.cpp

#include "file1.h" 
#include <iostream> 

using namespace std; 

bool parse(char** &buffer) { 
    buffer[0] == "test"; 
} 

Und file2.cpp umfasst file1.h und Anrufe analysieren() mit einem char ** -Puffer;

beim Kompilieren erhalte ich:

error: expected ';', ',' or ')' before & token 

Was bin ich?

EDIT: Ich baue ein Projekt, das rohe Sockets verwendet, und es ist meist C-Code.

+3

* unbekannte Art zu verhindern ‚Bool‘ error * ... du bist wahrscheinlich eine C unter Verwendung von Compiler anstelle eines C++ - Compilers – Praetorian

+0

Wenn Sie einen C++ - Compiler verwenden, können Sie die Verwendung von std :: string & anstelle von char ** & vereinfachen. –

+0

Auf welchem ​​System läuft das? Welcher Compiler? Wenn Sie Linux verwenden, versuchen Sie, g ++ anstelle von gcc zu verwenden, um es zu kompilieren. –

Antwort

2

Sie verwenden einen C-Compiler, keinen C++ - Compiler.

0

denke ich, was Sie wirklich zu tun versuchen, ist ein Array von char Zeiger zu übergeben, daher könnten Sie die Funktion

bool parse(char** buffer); 
0

Der Compiler ändern, in Modus C-Sprache, über die & beschwert Symbol:

bool parse(char ** &buffer) 

die C-Sprache ist nicht der & Charakter in diesem Zusammenhang.

Es ist jedoch gültige C++ - Syntax, da die Funktion einen Zeiger erfordert, der als Verweis übergeben wird.

Wie andere bereits gesagt haben, wechseln Sie zu einem C++ - Compiler oder sagen Sie Ihrem Compiler, dass er die Datei als C++ - Sprache übersetzen soll.

0

Dieser Anhaltspunkt:

bool parse(char** &buffer) { 
    buffer[0] == "test"; 
} 

Zeigt an, dass ‚Puffer‘ ist eine Art von Hinweis auf eine Art von Array von Zeichenketten sein. Nicht sicher, warum es kehrt ein Bool

Sie berücksichtigen sollten (die man übersehen, sowieso.):

// a std::vector of std::string 
typedef std::vector<std::string> StrVec_t; 

// parse can easily add individual std::strings 
// to the std::vector (from some unknown source) 
bool parse (StrVec_t& buffer) 
{ 
    buffer.push_back(std::string("test")); // tbd - where did 'test' come from? 
    return(true); // and add some meaning to this, or perhaps remove 
} 

// and is used as 
// ... 
StrVec_t myWords; 
// ... 
// ... 
(void)parse(myWords); // update myWords from some other source 
// ...    // example of how to discard bool 
+0

Und ja, das wird einen C++ Compiler benötigen. –

Verwandte Themen