Myślę, że odpowiedź brzmi nie, i zazwyczaj nie mam problemu z przechodzeniem przez kod źródłowy, ale jestem trochę nowy w C/C++ i nie mogę znaleźć miejsca, gdzie ta stała jest zadeklarowana.Czy istnieje sposób odnoszenia się do stałej C, która nigdy nie została zdefiniowana/zadeklarowana?
Szukam CMD_REQ_REDIS_MGET
w The hiredis-vip client library for Redis. Zrobiłem to za pomocą github/google i otrzymałem wyniki dokładnie w dwóch plikach dla pięciu wystąpień. Próbowałem również grep na ciąg w kodzie źródłowym.
$ grep -rnw ./ -e "CMD_REQ_REDIS_MGET"
./command.c:241: case CMD_REQ_REDIS_MGET:
./command.c:574: r->type = CMD_REQ_REDIS_MGET;
./hircluster.c:3257: if (command->type == CMD_REQ_REDIS_MGET) {
./hircluster.c:3446: if (command->type == CMD_REQ_REDIS_MGET) {
./hircluster.c:3480: if (command->type == CMD_REQ_REDIS_MGET) {
Kod źródłowy nie zawiera żadnych plików binarnych i powinien być samodzielny. Nie zawiera żadnych bibliotek z zewnętrznych źródeł, które są powiązane z Redis, więc przez kilka godzin byłem zdezorientowany.
Powód, dla którego muszę wiedzieć, to to, że próbuję dodać kolejną stałą, tak jak ona, i ciągle dostaję błędy, że deklaracja nie została znaleziona, więc zastanawiam się, czy jest jakaś czarna magia, która dzieje się tutaj z C, którego po prostu nie jestem świadomy.
EDYCJA: Chciałem zaznaczyć, że ten kod faktycznie będzie się kompilował w niezmienionym stanie.
czy na pewno wykonujesz grep na odpowiednim poziomie? takie definicje znajdują się zwykle w pliku .h. –
@ Jean-FrançoisFabre Wykonuję go u podstaw repozytorium git –