Как получить доступ и заменить в Perl? [Дубликат]

Этот однострочный лайнер сделает это - если он уже выровнен по горизонтали, он не перейдет к следующей границе страницы:

aligned = ((unsigned long) a & (getpagesize()-1)) ? (void *) (((unsigned long) a+getpagesize()) & ~(getpagesize()-1)) : a;

Этот однострочный лайнер будет делать это - если он уже выровнен по горизонтали, будет не перейти к следующей границе страницы:

, если вы действительно сделали хотите перейти на следующую границу страницы, даже если она уже выровнена - просто выполните:

aligned = (void *) (((unsigned long) a+getpagesize()) & ~(getpagesize()-1))

Это также должно избегать всех предупреждений компилятора.

getpagesize() - это POSIX. #include <unistd.h>, чтобы избежать предупреждений.

-8
задан hwnd 30 July 2013 в 15:05
поделиться