Это уже было предложено в комментариях. Я добавил тип контента (измените его, если хотите, если у вас другой тип контента).
$data = array(
'data' => 'Testing data',
'name' => 'Testing',
'no' => '1234');
$data_string = json_encode($data);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, Yii::$app->request->post('url'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_SSLVERSION, 6);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . mb_strlen($data_string) )
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
$result = curl_exec($ch);
curl_close($ch);
return $result;
__ далеко в правильном месте в определении типа?
[Редактирование, в ответ на комментарий ChrisN - спасибо]
Это - зависимая от компилятора функция, так как это не часть ANSI C. Согласно руководству компилятора <http://www.freescale.com/files/soft_dev_tools/doc/ref_manual/CW_Compiler_HC12_RM.pdf>, глава 8, Вам поместили его правильно. В других компиляторах Вы, возможно, должны инвертировать порядок. Это должно быть довольно легко выяснить, тем не менее, так как точно одна из этих двух опций скомпилирует с любым данным компилятором.
Я должен добавить __ далеко к (MYFP) бросок?
Нет, это - часть типа.
Некоторая информация предполагает, что вызов к нечто не должен быть разыменован, каков Ваш опыт?
Указатели функции могут быть дополнительно разыменованы в C. Следующие строки оба допустимы, делают ту же самую вещь:
foo = (MYFP)0xFFFFFA;
returnvalue = foo(39); // 1
returnvalue = (*foo)(39); // 2
Что еще об этом выглядит неправильным, или я мог бы попытаться выполнить это?
Вы сделали это точно правильно.
__far
ключевое слово, по крайней мере, в мире MS, использовалось при создании двоичных файлов, которые использовали сегментированную память. Необходимо понять 8 086 систем памяти для понимания этого. Эти 8086 разделили память на сегменты, каждый сегмент был 64K долго, таким образом, каждому адресу в сегменте были нужны 16 битов. Адреса прибыли в две формы: рядом и далеко. Близкий адрес составлял 16 битов и был смещением в текущий сегмент, один из CS, DS, ES, SS в зависимости от инструкции, далекое составляло 32 бита и состояло из сегмента и смещения. В этих 8086 абсолютный адрес равнялся 16 * сегмент + смещение, давая адресуемый диапазон 1 МБ.
Если Вы не используете сегментированную систему памяти, и похоже, что Вы не, то все адреса имеют то же число битов, таким образом, близкое/далекое различие не необходимо, что означает, что ключевое слово, вероятно, проигнорировано компилятором.
Это - отрывок кода, который работает из проекта, я продолжаю работать. Это - Парадигма C++, таким образом, это использует некоторую версию Borland. ЦП, который это использует, является 8 086 клонами, таким образом, сегментировал 20-разрядную память.
void softSerial0SR(unsigned16);
void (__far *softHandler)(unsigned16);
Я инициализирую softHandler к 0 без жалобы.
Затем
softHandler = softSerial0SR;
в коде установки.
Для вызова его просто назовите softHandler как регулярная функция.
Обратите внимание, что этот код немного настраивают для Вас из фактического кода, который я имею.
Согласитесь, что код выглядит хорошо - в этом случае, я получил бы дизассемблирование кода, сгенерированного, и фигура, если бы это вышло право. Должно только быть 10 инструкций самое большее - и затем Вы будете знать наверняка, если это работало.
обе программы были созданы тем же компилятором/опциями, таким образом, они используют тот же OBI?