2009-07-14 3 views
0

Zu diesem Bit Code übergebe ich die Zeichenfolge "kellogs special k" und ich bekomme 1 was bedeutet, dass die Zeichenfolge eine ganze Zahl ist. Was um alles in der Welt mache ich falsch? Oder ist es ein GMP-Problem?Ist das ein Fehler in GMP 4.1.2 oder mache ich etwas falsch?

#define F(x) mpf_t (x); mpf_init((x)); 

long __stdcall FBIGISINTEGER(BSTR p1) { 
    USES_CONVERSION; 
    F(n1); 
    LPSTR sNum1 = W2A(p1); 
    mpf_set_str(n1, sNum1, 10); 
    return mpf_integer_p(n1); 
} 

By the way, wenn jemand mit einem aktuelleren GMP vorschlagen geht, bitte können Sie mir geben die Web-Adresse des statischen LIB für Windows. TIA.

Antwort

3

Sie sollten den Rückgabewert von mpf_set_str überprüfen. Es gibt 0 bei Erfolg und -1 bei Fehler zurück. In diesem Fall hätte es einen Fehler zurückgegeben und n1 bleibt unberührt. mpf_init hat es auf Null initialisiert, also testet man, ob Null eine Ganzzahl mit mpf_integer_p ist, gibt true zurück.

Verwandte Themen