Kiedy używam następującego kodu, aby wykonać jakąś akcję przez 1 sekundę, otrzymuję ostrzeżenie C4101 od Visual Studio: ostrzeżenie C4101: "highResClock": niepowiązana zmienna lokalna. Nie rozumiem, dlaczego otrzymuję to ostrzeżenie, gdy używam highResClock dwa razy po zadeklarowaniu go.C++ 11 zmienna lokalna bez odniesienia
chrono::high_resolution_clock highResClock;
chrono::duration<int, ratio<1, 1> > dur(1);
chrono::time_point<chrono::high_resolution_clock> end = highResClock.now() + dur;
while (highResClock.now() < end)
{
// do something repeatedly for 1 second
}
Edit: Wygląda na to ostrzeżenie z Visual Studio jest ponieważ std :: Chrono :: high_resolution_clock :: teraz() jest funkcją statycznego. Zmienna highResClock nie była potrzebna, aby uzyskać dostęp teraz(), mimo że jest to konkretna metoda, którą wybrałem. Visual Studio wydaje się interpretować to jako niestosowanie zmiennej. Kiedy należy stosować następujące już nie dostać żadnych ostrzeżeń:
chrono::duration<int, ratio<1, 1> > dur(1);
chrono::time_point<chrono::high_resolution_clock> end = chrono::high_resolution_clock::now() + dur;
while (chrono::high_resolution_clock::now() < end)
{
// do nothing
}
Uwaga: 'std :: chrono :: high_resolution_clock :: now' jest statyczną funkcją i może być używany bez instancji' std :: chrono :: high_resolution_clock'. Nie wiem, dlaczego VS daje ci C4101, ale to może być źródło. – Zeta
FWIW, kompiluje ostrzeżenie [na GCC/coliru] (http://coliru.stacked-crooked.com/a/b543c37fe327fcff). –
To samo dotyczy ['clang' z' -Weverything'] (http://coliru.stacked-crooked.com/a/198f8d25bf0093a) – Zeta