From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=oR2C5goSPrdSqiHclQ9/Artvb0CHSItVklltwYUceeg=; b=GULVgZGG/7raB0UQdZUj63/x51Y4mBNZ5O/1WX0HBNIlU9GZf9/oOdKjB4AkfdG3ro L16NuAbwacNDza6YSbwSRwIErvbrF9FETM43lRCMA9si5e+n8bbNue/lUgRXTnPGnRHg 88IuRa4peUDWTtBFPdWvMT8TjNCEUZv3AACKG6V3xF17e9nNKnp/C521JUe0umNoyWpv OoWykYpNwecQOCFwetZaElPHe22Z1QbV+9fcUQPF6gqvltdGzWHU4vGuFfox/qpOjk1q qIPvfL3rZRuGyCu7JCL2/ZH03seqsVcqEn2wpiVj/5tINDRBPPC/7la6ePEjEoSnnMFd +5lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=oR2C5goSPrdSqiHclQ9/Artvb0CHSItVklltwYUceeg=; b=sHvLTpMcNrovuyn3WJcCYkS3Z6MXOFWWvemHxLx0xmdSvaWYQcVvLqM82Xdj3l6bWj M9gX+Wp/IHeqMHOqH4nVE8CGMGRAIXR97b6AHGycw1ehGlgjEeiePG3If3B0oc6HdeH2 8du/fTg3E0TkIlLrylXbMHxpKgEfk21tGa41r7c+T5d2UPs8urL9W+UakkPwzW9lMA3v ipx149qGpuFUkSGEIvOw5CrMcjFEyBxWUcSVJHoumJSrTAyiKFbF8mUjl/OwpwhD0RCG OyttlGvT861ZL28lnoYZaZvyAYg/7lb2N83AwgjCX+ZQjeuVZLGsOzTpvoGFUZwfWZtp B/Nw== X-Gm-Message-State: AHQUAuZwHakd6ZdpV8mBLoo6MDs23hLH5VpMvc33sejoeHkNTmuThJWB ZTWtaRXsfHamaoDaG8scTxJ7bTwf X-Google-Smtp-Source: AHgI3Iank2sx0nkP9LCdgHxKa3sm8l3bc3iohR2/m+ycVFyUvqFlkMeQetK5nY8bQonM6064Y2Nm+w== X-Received: by 2002:a2e:9b95:: with SMTP id z21mr3521509lji.155.1550875795367; Fri, 22 Feb 2019 14:49:55 -0800 (PST) To: devel@lists.altlinux.org References: <5d1faa4c-f21b-047b-b8e9-27d28109f0b0@altlinux.org> <20190221132501.GQ10173@altlinux.org> <42f17a50-affe-4c54-99ad-88502a65854f@gmail.com> From: Leonid Krivoshein Message-ID: <0116bbf4-9a04-9ff3-819f-729b785a3bb1@gmail.com> Date: Sat, 23 Feb 2019 01:48:30 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru Subject: Re: [devel] =?utf-8?b?bWVtY3B5INCz0LvRjtGH0LjRgiAo0LjQu9C4INGPINC9?= =?utf-8?b?0LUg0YPQvNC10Y4g0LXQs9C+INCz0L7RgtC+0LLQuNGC0Ywp?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Feb 2019 22:49:58 -0000 Archived-At: List-Archive: List-Post: 22.02.2019 23:51, Vladimir Didenko пишет: > пт, 22 февр. 2019 г. в 22:29, Leonid Krivoshein: >> 21.02.2019 16:25, Alexey V. Vissarionov пишет: >>> (_data.size % 2) лично я поменял бы на (_data.size & 0x01) >> Да, так на порядок быстрее. > Это одинаково. Не надо оптимизировать за компилятор, он с этим и сам > неплохо справляется (иногда, даже чересчур) Это может быть одинаково при соблюдении многих "если". А может и не быть. Лучше писать сразу без надежд на "если". >> Тут ко всему не очевидное поведение компилятора при работе с адресами, >> когда их складывают с целыми (много от чего зависит и в ряде случаев >> просто на ворнинги можно нарваться). Такой код в любом случае сразу >> переписывать на более безопасный, независимо от memcpy()/memmove(). >> Например, так: >> >> memmove(&_data.data[8], &data.data[9], _data.size - 9); /* если тип >> данных [unsigned] char */ >> > Вы глупость написали. Арифметика указателей и целых чисел вполне > определена и безопасна, если не выходить за границы массива. И еще - > запись p + 8 и &p[8] равносильны согласно стандарту языка C. И каково же её определение в разных стандартах языка C? А реализация в разных компиляторах? К примеру, согласно N1570 (6.5.6) над void-указателями такого не проделаешь, в отличие от gcc, который тоже ни один стандарт могёт. Кстати, именно с такой арифметикой на более старом gcc на ворнинги нарывался и всегда их сразу выправлял. Нет, лучше об этом не думать, а писать сразу так, чтобы работало везде. -- Best regards, Leonid Krivoshein.