template < EC_SPI_CFG_DATA_FRAME FRAMES >
struct spi
{
mutable uint16_t* p_tx = nullptr;
};
template < >
struct spi<EC_SPI_CFG_DATA_FRAME::FRAME_8_BIT>
{
mutable uint8_t* p_tx = nullptr;
};
int *aaa; //переменная с именем aaa типа "указатель на int", расположена в некоторой ячейке памяти, выделенной на стеке
aaa = new int(6); //присваиваем переменной aaa новое значение, а именно, адрес выделенной ячейки памяти в куче, содержащей значение 6
qInfo() << aaa; // 0x6a4e50 <- узнать тот самый адрес, что мы присвоили указателю
qInfo() << *aaa; // 6 <- перейти по этому адресу и извлечь значение
qInfo() << &aaa; // 0x28fbe8 <- адрес ячейки, где лежит значение самой переменной aaa
qInfo() << &*aaa; // 0x6a4e50 <- перешли по указателю, который лежит в aaa (ячейка в куче, содержащая значение 6), потом узнали адрес этой ячейки, и конечно это тот самый адрес, по которому мы перешли
qInfo() << *&aaa; // 0x6a4e50 <- узнали адрес ячейки стека, по которому расположена переменная aaa, потом перешли по нему и извлекли значение переменной aaa. то же самое, что и просто обратиться к aaa
qInfo() << *&*&*aaa; // 6 тож самое что и выше, все &* нивелируют друг друга (переход по адресу и опять получение того же самого адреса обратно), остаётся только *aaa, ну а там лежит 6
Вот к примеру
char ch = str[5];
длина str всего 3. Поэтому возникает ошибка, но vs не вылетает
std::string
, для статических массивов — std::array
, для динамических — std::vector
. И ничего не будет вылетать. >>> name = "NAME"
>>> input_path = "INPUT_PATH"
>>> print("\""+name+"\" - ERROR! File not found in \""+input_path+"\"")
"NAME" - ERROR! File not found in "INPUT_PATH"
# не лучше ли, "мальчики-налево, девочки-направо" ?
>>> print('"{0}" - ERROR! File not found in "{1}"'.format(name, input_path))
"NAME" - ERROR! File not found in "INPUT_PATH"
>>> print("\""+name+"\" - ERROR! File \""+name+"\" not found in \""+input_path+"\"")
"NAME" - ERROR! File "NAME" not found in "INPUT_PATH"
>>> print('"{0}" - ERROR! File "{0}" not found in "{1}"'.format(name, input_path))
"NAME" - ERROR! File "NAME" not found in "INPUT_PATH"
Может ли n быть больше нуля, если перед этим мы делаем count = 0?
static unsigned long count = 0;
зачем здесь mutexПодумайте, что случится. если два потока наткнутся на инкремент одновременно юез синхронизации. Особенно при существовании кэша, присутствии оптимизаций, консолидирующих запись в память и тому подобного. На самом деле тут лучше использовать атомик, ну да ладно.