Conviene convertire le date in Julian Day:

codice:
#include <cstdlib>
#include <iostream>
using namespace std;

double JulianDay(int year, int month, int day)
{
    double retValue;
    double Y, M, D;
    double A, B;
    
    D = day;
    
    if ( month <= 2 )
    {
        Y = year - 1;
        M = month + 12;
    }
    else
    {
        Y = year;
        M = month;
    }
    
    A = (int)(Y/100);
    B = 2 - A + (int)(A/4);
    
    retValue = (int)(365.25 * (Y + 4716)) + (int)(30.6001 * (M + 1)) + D + B - 1524.5;
    
    return retValue;
    
}

int main ()
{
    int d1, m1, y1;
    int d2, m2, y2;
    
    double jd1, jd2;
    int diff;
    
    d1 = 5;
    m1 = 2;
    y1 = 1995;
    
    d2 = 31;
    m2 = 8;
    y2 = 2014;
    
    jd1 = JulianDay(y1, m1, d1);
    jd2 = JulianDay(y2, m2, d2);
    
    diff = (int)(jd2 - jd1);
    
    cout << endl;
    
    cout << "Data 1: " << d1 << "/" << m1 << "/" << y1 << endl;
    cout << "Data 2: " << d2 << "/" << m2 << "/" << y2 << endl;
    
    cout << "Differenza in giorni: " << diff << endl << endl;
        
    return 0;
}

Output:
[vincenzo]$ g++ -Wall -W -pedantic -O2 jd.cpp -o jd
[vincenzo]$ ./jd

Data 1: 5/2/1995
Data 2: 31/8/2014
Differenza in giorni: 7147

L'algoritmo è preso da Astronomical Algorithms di Jean Meeus.