funkcja skrótu dla struktury

0

na poczatku jest taka sytuacja:

struct Dane{
  std::string name;
  std::string surname;
}

po pewnym czasie zmiana struktury

struct Dane{
  std::string name;
  std::string surname;
  int age;
}

Czy mozna jakoś w kodzie wyznaczyć np. MD5 dla struktury (kodu struktury) tak aby dodawanie kolejnych pól w strukturze dawało inne MD5 ?
np. nowa wersja oprogramowania, jest zmieniona struktura Dane to przebuduj cache

1

Miły temat.
Dawaj na wskaźnikach void, do tego moduł przepisujący wszystkie rekordy na nową specyfikację i specyfikację rekordu trzymaną w odzielnym miejscu. Niech algorytm za każdym razem go pobiera.
Ale to raczej nie na stringach tylko na bajtach rób.
Liczbami określaj rozmiar rekordu.
liczby i zapętlone pętle, w takiej samej strukturze nazwy.

Idealnie trafiłeś z tematem, bo właśnie przymierzam się do pisania własnego SQL

Utworzyłem plik z zapisem baz danych który jest otwierany przez serwer i do przeglądarki przesyła nazwy tych baz danych.
Czyli sam początek. Chyba będę robił dokładnie to co Ty teraz, tylko ja chcę stworzyć jakiś moduł obsługi takiej bazy danych , czyli graficzny UI do tego co robisz, w JS to będzie pewnie banał, potem to co Ty (na serwerze w C).

Dałem przycisk Off - wyłącza serwer ! xD

Ile widziałeś stron z takim przyciskiem?

1.jpg

1

A nie można jakoś w CMake to zawrzec, żeby przy każdym buildzie generowało? Tak jeszcze przed rozpoczęciem preprocessingu.

Od biedy zawsze możesz naklepać skrypt w pythonie, odpalać i zapisywać gdzieś a potem czytać 🤷.

No chyba, że o coś innego Ci chodzi i nie zrozumiałem.

3
Marius.Maximus napisał(a):

na poczatku jest taka sytuacja:

struct Dane{
  std::string name;
  std::string surname;
}

po pewnym czasie zmiana struktury

struct Dane{
  std::string name;
  std::string surname;
  int age;
}

Czy mozna jakoś w kodzie wyznaczyć np. MD5 dla struktury (kodu struktury) tak aby dodawanie kolejnych pól w strukturze dawało inne MD5 ?

Jasne. Jest taka super magiczna biblioteka, boost::pfr, która potrafi iterować po polach struktury bez grama makra. To powinno ci wystarczyć by obliczyć wymagany hash.
Pytanie na jakie zmiany w strukturze ma być wrażliwy ten hash?
Jeśli nazwa pola jest też istotna, to dla tej biblioteki potrzebujesz co najmniej C++20. Jeśli interesuje cię tylko typ i liczba pól, to biblioteka wymaga C++14.

1 użytkowników online, w tym zalogowanych: 0, gości: 1