2016-04-16 11 views
1

Ich habe eine Struktur mit C Darstellung bekommt:Wie erhält man die Größe einer benutzerdefinierten Struktur? (Sizeof)

struct Scard_IO_Request { 
    proto: u32, 
    pciLength: u32 
} 

, wenn ich die sizeof stellen will (wie in C sizeof()) mit:

mem::sizeof<Scard_IO_Request>();

ich Kompilierungsfehler erhalten :

"error: `sizeof` is a reserved keyword" 

Warum kann ich, wie ich diese sizeof Funktion nicht verwenden n C? Gibt es eine Alternative?

Antwort

13

Aus zwei Gründen:

  1. Es gibt keine solche Funktion als „sizeof“, so dass der Compiler eine ziemlich schwierige Zeit nannte es haben wird.

  2. So rufen Sie generische Funktionen nicht auf.

Wenn Sie die Dokumentation für mem::size_of überprüfen (die Sie auch search for "sizeof" wenn Sie feststellen können), werden Sie sehen, dass es eine runnable example enthält, die zeigt, wie Sie es nennen. Für die Nachwelt ist das Beispiel in Frage:

fn main() { 
    use std::mem; 
    assert_eq!(4, mem::size_of::<i32>()); 
} 

In Ihrem speziellen Fall, können Sie die Größe dieser Struktur erhalten würden

mem::size_of::<Scard_IO_Request>() 
+0

mit machte ich einen Tippfehler ;-) – DDT