Использование exuberant ctags:
$ ectags --c-kinds=d *.[ch]
ectags
является расширенной версией ctags
и etags
используется для создания «файла тегов», который может использоваться такими редакторами, как Vi/Vim или Emacs, для удобной навигации по исходному коду. Он знает о правилах грамматики C, поэтому он может анализировать код C для вас (так что вам не нужно беспокоиться о регулярных выражениях).
С помощью --c-kinds=d
мы указываем ectags
заботиться только о #define
строках кода C.
Теперь у вас есть файл с именем tags
в текущем каталоге со следующим типом содержимого:
DEVELOPER bayes.h 225;" d
DIFFERENT bayes.h 227;" d
DIR_MIN bayes.h 338;" d
DNA bayes.h 242;" d
DOLLAR bayes.h 309;" d
DOLLO bayes.h 276;" d
DOWN bayes.h 215;" d
То есть каждая строка (за исключением нескольких строк заголовка) идентифицирует имя макроса, исходный файл, в котором он был найден, и номер строки. Если макрос определен в нескольких файлах, он будет указан один раз для каждого вхождения. Последний d
— это индикатор типа тегов (это все #define
s).
Если вы просто хотите подсчитать, сколько раз был определен каждый макрос:
$ cut -f 1 tags | uniq -c
Почему бы вам не заставить Flask прослушивать все общедоступные IP-адреса.
http://flask.pocoo.org/docs/0.10/quickstart/#a-minimal-application
Сервер, видимый извне
Если вы запустите сервер, вы заметите, что сервер только {{1 }} доступным с вашего собственного компьютера, а не с любого другого компьютера в сети. Это значение по умолчанию, потому что в режиме отладки пользователь приложения может выполнять произвольный код Python на вашем компьютере.
Если у вас отключена отладка или вы доверяете пользователям в своей сети, вы можете сделать сервер общедоступным, просто изменив вызов метода run (), чтобы он выглядел следующим образом:
app.run (host = '0.0.0.0')
Это говорит вашей операционной системе, что нужно прослушивать все общедоступные IP-адреса.
Файл /etc/hosts используется для поиска имен, а не для перенаправления IP-адреса на IP-адрес. Более того, если "песочница" эффективна, вы не должны быть в состоянии достичь виртуального сервера со стороны LAN/WLAN. Я могу предложить два возможных способа решения вашей проблемы, но могут быть и другие.
1) Если виртуальный сервер может быть настроен на смягчение "песочницы" - т.е. иметь IP-адрес, отличный от шлюзового, это было бы самым простым решением.
2) Второй способ требует больше работы. Для этого нужно написать простую программу-слушатель/переадресатор, которая работает в фоновом режиме, слушает адрес реального компьютера (но не произвольного) на порту 5000 и пересылает пакеты на 127.0.0.1. Если это работает, вы можете использовать свой маршрутизатор для пересылки пакетов, адресованных произвольным частным IP-адресам:порт (например, 10.0.0.2:5000), на адрес компьютера слушателя.