Я использую Visual Studio в данный момент, чтобы сделать что-то, что является довольно просто:Невозможно скомпилировать при оптимизации с помощью VS из-за проблемы с memcpy; рассматриваться в качестве неотъемлемого функции
memcpy(real, real_, n, sizeof(float));
где читать и real_ являются указателями типа поплавка *; указывая на начало двух блоков выделенной памяти размером = n * sizeof (float). У меня нет проблем с компиляцией этого без оптимизации, но после компиляции под/O2. Компилятор выдает следующее сообщение об ошибке:
Error 32 error C2167: 'memcpy' : too many actual parameters for intrinsic function
Я не могу понять это, как я отключил встроенные функции и «CFLAGS» в командной сборке линии не включает/Oi
Я предполагаю, следовательно, что O2 делает это по умолчанию. Поэтому я использовал директиву pragama-компилятора для локального переключения как оптимизации, так и/или встроенных функций без эффекта.
На данный момент я полностью сбит с толку. Более того, у меня никогда не было проблем с этим. В настоящее время я работаю с VS 2013. MSDN мало или вообще не используется в этом вопросе.
EDIT:
Do'h - спасибо The Dark. Я отправлял четыре, а не три аргумента - см. Memcpy (3). Однако это компилировалось (даже без предупреждения) и отлично работало при компиляции без оптимизации.
Ничего общего с intrinsic - 'memcpy' принимает 3 параметра, а не 4. Вы, вероятно, хотите сделать * вместо двух последних параметров. –
Отлично. Как на земле он собирался без предупреждения (и работал) с очень большими массивами. – cdcdcd
Отсутствует '#include'? –
Ryan