Войти
ФлеймФорумПрограммирование

Общие вопросы по программированию (5 стр)

Страницы: 14 5 6 7320 Следующая »
#60
(Правка: 19:52) 19:51, 19 ноя. 2019

=A=L=X=
> Именно поэтому в итоге горемыки намучавшись с постоянно вылазившими ошибками линковки
ну "ошибок линковки" быть не могло. т.к. символ указывается по имени функции.
а вот слинкованный бинарик, действительно мог удивить переданными в него типами :)

ещё можно вернутся к тому времени, когда в Си не было typedef, но мы не будем.

хотя ноги от туда тоже растут. Т.к. парсинг выражений в Си дело не очень приятное.
Т.к. заранее не знаешь что ты парсишь, то ли выражение, то ли приведение к типу, то ли объявление чего-нибудь.

=A=L=X=
> через отрубленную лошадиную голову
да уж. точнее и не скажешь


#61
22:29, 19 ноя. 2019

хватит страдать ерудной - быстро показывайте кто сколько зашипил и разойдёмся

#62
12:46, 20 ноя. 2019

Сучествует ли в этих ваших юниксах аналог виндовозного GetFileSizeEx?

#63
13:05, 20 ноя. 2019

nes
> Сучествует ли в этих ваших юниксах аналог виндовозного GetFileSizeEx?

1. ftello()/fseeko()
2. boost::filesystem::file_size
3. std::filesystem::file_size для  с++17
4. системные вызовы типа stat/fstat/lstat

#64
13:08, 20 ноя. 2019

forwhile
Не то, stat по имени файла размер возращает,
а нужно по эйди.

0iStalker
Все не то, пока сделал так, но говнище полное:

static int64 File_GetSize(const FileImpl* impl) noexcept
{
  off64_t oldPos = ::lseek64(impl->id, 0, SEEK_CUR);

  if (oldPos != -1)
  {
    off64_t size = ::lseek64(impl->id, 0, SEEK_END);

    // Restore old position
    if ((size != -1) && (::lseek64(impl->id, oldPos, SEEK_SET) != -1))
    {
      return size;
    }
  }

  return -1;
}
#65
13:12, 20 ноя. 2019

nes
> а нужно по эйди.
fstat

#66
13:14, 20 ноя. 2019

nes
> Все не то

Почему?

https://en.cppreference.com/w/cpp/filesystem/file_size

#include <iostream>
#include <fstream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
    fs::path p = fs::current_path() / "example.bin";
    std::ofstream(p).put('a'); // create file of size 1
    std::cout << "File size = " << fs::file_size(p) << '\n';
    fs::remove(p);
 
    try {
        fs::file_size("/dev"); // attempt to get size of a directory
    } catch(fs::filesystem_error& e) {
        std::cout << e.what() << '\n';
    }        
}
#67
13:43, 20 ноя. 2019

0iStalker
Я ограничился 11 стандартом крестов и стараюсь не пользоваться std::

#68
13:45, 20 ноя. 2019

nes
> Я ограничился 11 стандартом крестов и стараюсь не пользоваться std::
ещё можно попробовать программировать в боксёрских перчатках

#69
13:47, 20 ноя. 2019

entryway
Оу, благодарствую!

#70
(Правка: 13:49) 13:49, 20 ноя. 2019

Suslik
Ты не шаришь - 11 имеет все минимально необходимое
для более-менее комфортной разработки на Цэ++.
Все, что выше - уже плюшки сомнительной надобности,
ну или я не узрел в них что-то архи полезное.

#71
13:53, 20 ноя. 2019

nes
> Я ограничился 11 стандартом крестов и стараюсь не пользоваться std::

boost работает и на 11 и на 03 даже

#72
13:55, 20 ноя. 2019

0iStalker
Буст в бусте будет излишним, у меня тут своя либа.

#73
15:26, 20 ноя. 2019

nes
> и стараюсь не пользоваться std::

интересный индивид

#74
15:50, 20 ноя. 2019

nes
> стараюсь не пользоваться std::
Я тоже, когда делаю проекты на Qt, стараюсь не пользоваться std, так что норм, размер файла можно сразу через QFile

Страницы: 14 5 6 7320 Следующая »
ФлеймФорумПрограммирование