Как избежать проблем с типами size_t и int в 64-битных сборках C ++?

Сегодня я впервые сделал 64-битную сборку своего проекта. В основном он скомпилирован, связан и работает нормально, за исключением предупреждений о несовместимости между новым 64-битным типом size_t и простым типом int. В моем коде это чаще всего происходит в таких ситуациях:

void func(std::vector<Something> &vec)
{
    int n = vec.size();
    for (int i=0; i < n; i++)
    {
        ....vec[i]....
    }
}

Это довольно легко исправить, и я прочитал статью, в которой говорится, что лучше использовать size_t или ptrdif_t в качестве индексов цикла. Но что я могу сделать в такой ситуации?

void outsideLibraryFunc(int n);

void func(std::vector<Something> &vec)
{
    int n = vec.size();
    outsideLibraryFunc(n);
}

Я не могу изменить объявление функции внешней библиотеки, которая ожидает аргумент типа int, и мне нужно передать ему количество элементов вектора. Что я могу сделать, кроме отключения предупреждений компилятора?

9
задан neuviemeporte 30 September 2010 в 17:42
поделиться