Типичным объявлением переменной является
extern int x;
. Поскольку это только объявление, требуется одно определение. Соответствующим определением будет:
int x;
Например, следующее генерирует ошибку:
extern int x;
int main()
{
x = 0;
}
//int x; // uncomment this line for successful definition
Аналогичные замечания относятся к функциям. Объявление функции без ее определения приводит к ошибке:
void foo(); // declaration only
int main()
{
foo();
}
//void foo() {} //uncomment this line for successful definition
Будьте осторожны, чтобы выполняемая вами функция точно соответствовала той, которую вы объявили. Например, у вас могут быть несогласованные cv-квалификаторы:
void foo(int& x);
int main()
{
int x;
foo(x);
}
void foo(const int& x) {} //different function, doesn't provide a definition
//for void foo(int& x)
Другие примеры несоответствий включают
Сообщение об ошибке из компилятора часто дает вам полное объявление переменной или функции, которая была объявлена, но не определена. Сравните его с определением, которое вы указали. Убедитесь, что каждая деталь соответствует.
Хэш (строка, включая #) никогда не передается серверу, это исключительно свойство поведения браузера. Однако переменная $_SERVER['REQUEST_URI']
будет содержать остальные.
Если вам действительно нужно знать, что такое хеш, вам придется использовать свойство document.location.hash
JavaScript
, которое содержит содержимое хэша (вы можете вставить его в форму или отправить на сервер с запросом ajax
). Вы можете передать полный URL-адрес, включая якорь (часть после #), используя Javascript onload function
, который отправляет что URL
в конечной точке Ajax
.
Вы также можете посмотреть здесь Получить весь URL-адрес, включая строку запроса и привязку
Комментарий Пекки должен быть ответом. Параметр строки после хэш-тега не отправляется на сервер, это только для глаз браузера.
Это означает, что код сервера (PHP, в вашем случае) не содержит этой информации. Клиентский код (браузер, javascript, ...).
В идеале,
Исторически, часть после # чаще всего использовалась для вашего браузера быстро перейдите к определенному якорю на странице. В настоящее время он чаще используется для хранения информации о состоянии для клиента.
Вы могли бы отправить javascript этой информации на сервер или выполнить различные действия на основе этой информации. AJAX - ваш друг.