Это было моей собственной попыткой, но я буду использовать ответ annakata, поскольку это кажется намного более чистым:
function AddUrlParameter(sourceUrl, parameterName, parameterValue, replaceDuplicates)
{
if ((sourceUrl == null) || (sourceUrl.length == 0)) sourceUrl = document.location.href;
var urlParts = sourceUrl.split("?");
var newQueryString = "";
if (urlParts.length > 1)
{
var parameters = urlParts[1].split("&");
for (var i=0; (i < parameters.length); i++)
{
var parameterParts = parameters[i].split("=");
if (!(replaceDuplicates && parameterParts[0] == parameterName))
{
if (newQueryString == "")
newQueryString = "?";
else
newQueryString += "&";
newQueryString += parameterParts[0] + "=" + parameterParts[1];
}
}
}
if (newQueryString == "")
newQueryString = "?";
else
newQueryString += "&";
newQueryString += parameterName + "=" + parameterValue;
return urlParts[0] + newQueryString;
}
кроме того, я нашел этот плагин jQuery из другого сообщения на stackoverflow, и если Вам нужно больше гибкости, Вы могли бы использовать это: http://plugins.jquery.com/project/query-object
я думал бы, что код будет (не протестировали):
return $.query.parse(sourceUrl).set(parameterName, parameterValue).toString();
Макрос offsetof () - это время компиляции построить. Не существует стандартного способа его определения, но у каждого компилятора должен быть какой-то способ сделать это.
Одним из примеров может быть:
#define offsetof( type, member ) ( (size_t) &( ( (type *) 0 )->member ) )
Не будучи конструкцией времени компиляции технически (см. комментарии пользователя "litb"), каждый компилятор должен иметь по крайней мере одно такое выражение, которое оно может разрешить во время компиляции, что и есть то, что offsetof ()
определено в
Возможно, в вашем коде есть другая ошибка - отсутствие включения
Здесь он компилируется без предупреждения с g ++ 4, после того как я добавлю правильные #includes.
Вы #including stddef.h? offsetof () - это макрос, а не встроенное ключевое слово в C.
Если это не помогает, попробуйте сделать константу статической, чтобы ограничить ее модулем. Это могло бы порадовать компилятор.
Если у вас есть #include
, как я предполагаю (сообщение об ошибке, без которого вы цитируете, не имеет смысла), это ошибка вашего компилятора. offsetof
result - это целочисленное постоянное выражение в C99, а также в C90.