目前我正在嘗試運行一些我從lynda.com收到的代碼,但它正在吐出一個錯誤。我試圖編譯的文件如下,僅包括調用strnlen
(strc.cpp):MinGW g ++`strnlen`沒有在這個範圍內聲明
#include <cstdio>
#include <cstring>
#include <memory>
#include "strc.h"
...
strc::strc() : data(nullptr) {
msg("default ctor");
}
strc::strc(const char * s) {
size_t slen = strnlen(s, _maxlen);
data = new char[slen + 1];
data[slen] = 0;
memcpy(data, s, slen);
msg("cstring ctor");
}
strc::strc(const strc & f) {
size_t slen = strnlen(f.data, _maxlen);
data = new char[slen + 1];
data[slen] = 0;
memcpy(data, f.data, slen);
msg("copy ctor");
}
...
若要編譯此我運行:
g++ -c strc.cpp -o strc.o -std=c++11
我已經嘗試用string.h
代替cstring
,我甚至嘗試過,但在strnlen
之前std::
。在這個問題上的任何幫助將深受讚賞
能否請您爲我們提供了錯誤信息?是不是說這個'strnlen'沒有在這個範圍內聲明? –
複製構造函數可以使用'strlen'和'strcpy'來代替,因爲'f'在'f'的構造過程中已經被限制在'_maxlen'下 –