2010-02-17 7 views

Odpowiedz

35

C:

#include <string.h> // memcpy 
#include <stdlib.h> //realloc 

w C++, usunąć .h oraz przedrostek z c. W języku C++ zostaną umieszczone w przestrzeni nazw std, ale są również globalne.

+0

Możesz użyć '#ifdef __cplusplus' /' # else', aby automatycznie uwzględnić poprawne dla C lub C++. –

8

W C++ bardziej idiomatyczne jest używanie std::copy niż C memcpy, chociaż ten ostatni działa równie dobrze. Aby uzyskać std::copy, musisz #include <algorithm>.

Jednak nie ma bezpośredniego odpowiednika C++ do realloc.

+2

Gdybym mógł oznaczyć tę odpowiedź jako nieprzydatną z komentarzem, zrobiłbym to, ponieważ jest niepoprawny. Jak powiedział GMan, realloc znajduje się w . –

+5

Nie powiedziałem, że nie jest możliwe użycie funkcji standardowej biblioteki C 'realloc' w C++ (ponieważ, oczywiście, standardowa biblioteka C++ obejmuje całą bibliotekę standardową C89). Powiedziałem, że nie ma nowej funkcji biblioteki standardowej C++, która obejmuje funkcjonalność 'realloc', ponieważ' std :: copy' działa dla 'memcpy'. Chociaż przypuszczam, że moja intencja nie jest oczywista, jeśli moja odpowiedź jest czytana w odosobnieniu, a nie w połączeniu z drugą, już zaakceptowaną odpowiedzią. –

Powiązane problemy