簡體   English   中英

C ++中的多定義錯誤

[英]a multiple definition error in c++

我有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事情。 到底是什么問題?

頭文件中的以下定義:

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

當您包含cpp文件中的文件時,會得到定義,並且可以壓縮一些其他轉換單元(也許是main.cpp?)

它們看起來不應該放在頭文件中,但是如果這樣做,則可以在頭文件中將它們聲明為extern ,然后將實際定義移至cpp文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM