Güçlendirme asio soket iletişimimde hata ayıklamak üzereyim. Ve asio kütüphanenin içindeki kod parçası bulundu (/ asio/impl/write.hpp hattı 169() 1.47 artırmak boost bulunan):Boost :: asio bu tür garip kodlama stili nedir?
switch (start)
{
case 1:
buffers_.prepare(this->check_for_completion(ec, total_transferred_));
for (;;)
{
stream_.async_write_some(buffers_,
BOOST_ASIO_MOVE_CAST(write_op)(*this));
return;
default:
total_transferred_ += bytes_transferred;
buffers_.consume(bytes_transferred);
buffers_.prepare(this->check_for_completion(ec, total_transferred_));
if ((!ec && bytes_transferred == 0)
|| buffers_.begin() == buffers_.end())
break;
}
handler_(ec, static_cast<const std::size_t&>(total_transferred_));
}
Zaten C/C++ geliştirme yıl çok şey var deneyim, ama asla hayatımda hiç bu kadar garip bir uygulama gördüm. Oraya bakın, varsayılan: anahtar deyiminin etiketi for döngüsü içinde.
Bu hakkı anlıyorsam, anahtar deyimi bir goto yerine "yanlış kullanılır" (sağdaki (başlangıç! = 1, goto varsayılan :) durumları için)? Aslında standart olarak geçerli bir C/C++ mu? Ben mesela orijinal kodda döngü yerine
for(int i=0; i < 10; i++)
koyarsanız ne olacak. Atlama varsayılan olarak yapılırken tanımlanamayacak mı? Etiket mi? Burada bir hata ayıklayıcı kullanabilirim, ancak bu benim için çok şüpheli görünüyor, bunun farklı derleyiciler için farklı davranışlar üretebileceğini düşünüyorum.
'for' döngüsünün kendisi bir' goto 'olarak kullanılır. 'Break' çalıştırılmazsa, bir sonraki yineleme mutlaka 'return' nedeniyle 'default' etiketinden önce sonlanır. Oldukça kıllı şeyler. –