Столкнулся с интересной фичей/багом. В следующем примере кода цикл не выполняется из-за того, что случайно объявил переменную константной.
windows, mingw, gcc 4.9.2
#include <iostream>
#include <cassert>
// замена реальной ф-ции для примера,только для целых
int readRawData(char* buffer, size_t size)
{
assert(size == 4);
*((int*)buffer) = 10;
return 4;
}
int main(int argc, char *argv[])
{
int const blockCount = 0; // если const, то цикл ниже не выполняется. если убрать const, все норм
//stream.readRawData((char*)&blockCount, sizeof(blockCount)) // реальная ф-ция
readRawData((char*)&blockCount, sizeof(blockCount)); // замена для примера
for(int i = 0; i < blockCount; ++i) // в отладчике blockCount = 10, но цикл не выполняется, он выкинут при компиляции
std::cout << i << " "; // здесь должно печататься 0 1 2 3 ... 9 но не печатается ))
std::cout << std::endl;
return 0;
}