множественная ошибка определения в c ++ - PullRequest
0 голосов
/ 12 ноября 2011

У меня есть 2 файла, grabURL.cpp и grabURL.hpp.Когда я компилирую оба с помощью gcc, я получаю несколько ошибок определений.

grabURL.cpp

#include "grabURL.hpp"
size_t buffer(void *ptr, size_t size, size_t nmemb, void *stream) { 
            int numbytes = size*nmemb; 
            char lastchar = *((char *) ptr + numbytes - 1); 
        *((char *) ptr + numbytes - 1) = '\0'; 
            ret.append((char *)ptr); 
            ret.append(1,lastchar); 
        *((char *) ptr + numbytes - 1) = lastchar;
    return size*nmemb; 
 }
void grabURL(std::string url, std::string *theRet){
    curl_easy_setopt(curl,CURLOPT_URL,url.c_str());
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION, buffer);
res = curl_easy_perform(curl);
*theRet = ret;
}

grabURL.hpp:

#ifndef CURLURLGRAB_HPP
#define CURLURLGRAB_HPP
#include <string>
#include <curl/curl.h>
CURL * curl;
CURLcode res;
std::string ret;
size_t buffer(void *ptr, size_t size, size_t nmemb, void *stream);
void grabURL(std::string url,std::string* theRet);

#endif

Понятия не имею, чтоЯ делаю неправильно, я думал, что правильно сделал ifndef.Что именно не так?

1 Ответ

2 голосов
/ 12 ноября 2011

Это определения в вашем заголовочном файле:

CURL * curl;
CURLcode res;
std::string ret;

определяется, когда вы включаете файл из файла cpp и нажимаете на какой-то другой модуль перевода (возможно, main.cpp?)

Они не выглядят так, как должно быть в заголовочном файле, но если они это сделают, вы можете объявить их extern в заголовочном файле и переместить фактические определения в файл cpp.

...