Я думаю, это просто, вы можете проверить с помощью min (Id) и Max (id) с левым внешним соединением или внешним применением
подобно
Declare @ItemID int = 2
Select * From @OderDetail A
Outer Apply (
Select MIN(A2.Id) minID, MAX(A2.Id) maxID From @OderDetail A2
Where A2.ItemId =@ItemID
) I05
Outer Apply(
Select * From @OderDetail Where Id=minID-1
Union All
Select * From @OderDetail Where Id=maxID+1
) I052
Where A.ItemId =@ItemID Order By A.Id
. Дайте мне знать, если это поможет у вас или у вас есть какие-либо проблемы с этим ...
Привет,
man srandom
говорит, что функция не часть C99, но часть POSIX.
Активируются _BSD_SOURCE
или _XOPEN_SOURCE >= 500
, или любая другая подходящая функция тестируют макрос, который объявляет функцию srandom/random (см. man feature_test_macros
и man srandom
).
у Этого есть хорошие возможности, но необходимо выяснить макросы, которые определяются/не определенные неявно, таким образом, также путем чтения страниц справочника выше.
/usr/bin/colorgcc -std=c99 -D_XOPEN_SOURCE=600 -fgnu89-inline -g -Wall
-I/usr/include -I./ -I../ -I../../ -I../../../ -I../../../../ -O3 -o f8 f8.c
Я использую рэнд () и srand (). BTW: Вы забывали заголовок или два? По крайней мере, второе предупреждение говорит мне так.
Попытка включая math.h. (Просто помнивший мы всегда имели проблемы с математической библиотекой и должны были на самом деле вызвать, связывают его с-lm).
Да, это уловка. отсутствует: вы можете использовать -std = gnu99
вместо -std = c99
.
-std = c99
#define
s __ STRICT_ANSI __
, что /usr/include/features.h
интерпретируется как «по умолчанию не разрешать ничего, выходящее за рамки стандарта C» (без него вы получите как минимум _SVID_SOURCE
и _BSD_SOURCE
). -std = gnu99
, с другой стороны, означает «C99 плюс расширения GNU» (по умолчанию gcc в настоящее время -std = gnu89
, его эквивалент C89, поэтому вам нужно укажите что-нибудь, чтобы получить новые функции C99).
В качестве альтернативы вы можете включить макросы тестирования функций (как указано в ответе @ litb). Глядя на /usr/include/stdlib.h
в моей системе, он ожидает одно из __ USE_SVID
, __ USE_XOPEN_EXTENDED
или __ USE_SVID
или __.
/usr/include/features.h
сообщает мне, что макросы тестирования функций, которые могут их включить:
_SVID_SOURCE
(включает __ USE_SVID
) _BSD_SOURCE
(включает __ USE_BSD
) _XOPEN_SOURCE как минимум [1150855] [1150855] [1150855] 500
(включает __ USE_XOPEN_EXTENDED
) _XOPEN_SOURCE_EXTENDED
(также включает __ USE_XOPEN_EXTENDED
) _GNU567, включая все макросы, включает все макросы )
Для новых программ, в которых вас не слишком беспокоят потенциальные конфликты имен с новыми функциями из будущих стандартов, хорошей идеей будет использование -std = gnu99
и -D_GNU_SOURCE
. Он позволяет вам использовать все новые стандартные функции и расширения GNU в сочетании с каким-то запасным вариантом (например, autoconf
-style feature tests) дает наибольшую гибкость.
Ссылки:
Я создал случайные числа, используя GCC в CodeBlocks под Ubuntu 9.10 (с опциями компилятора: -Std = GNU99 -D_GNU_Source
) Так что это сработало для меня:
Это мой код, который я играл С:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
enum computer {keyboard, CPU, screen, printer};
int main(void)
{
enum computer comp;
time_t casovac;
comp = CPU;
srand(&casovac);
printf("%d", rand());
return 0;
}
Это была только идея, конечно, вы сможете выполнить его по другим способам ;-) [Установить CodeBlocks Использование: Sudo APT-Get Установить настроек
, а затем Sudo Получить установку CodeBlocks
]