Рассмотрим следующий код
// BOGP.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "gmp-static\gmp.h"
#include <stdlib.h> /* For _MAX_PATH definition */
#include <stdio.h>
#include <malloc.h>
#define F(x) mpf_t x; mpf_init( x );
int main(int argc, char* argv[])
{
F(foo);
char * buff;
mp_exp_t exp;
mpf_init_set_str( foo, "123", 10 );
buff = mpf_get_str(NULL, &exp, 10, 0, foo);
puts( buff );
puts("\n");
free(buff);
mpf_init_set_str( foo, "-123", 10 );
buff = mpf_get_str(NULL, &exp, 10, 0, foo);
puts( buff );
puts("\n");
free(buff);
mpf_init_set_str( foo, "+123", 10 );
buff = mpf_get_str(NULL, &exp, 10, 0, foo);
puts( buff );
puts("\n");
free( buff );
}
В первом случае, после вызова mpf_get_str, buff содержит «123».
Во втором, бафф содержит «-123».
Но в третьем, бафф содержит пустую строку ("").
Это использует GMP 4.2.4. Может быть, мне нужно снова посмотреть в руководстве, но я бы подумал, что ведущий «+» был бы обработан так же легко, как ведущий «-».