CEC13 Linux C++
2 次查看(过去 30 天)
显示 更早的评论
Hey guys! I am new to Linux and currently I am working on evolutionary computation which involves CEC13 benchmark.
I found on the CEC13 website that
For Linux Users:
Please change %xx in fscanf and fprintf and do not use "WINDOWS.H".
But fscanf and fprintf seem to follow the same syntax in Linux C++, what does it refer to ? What should I modify?
The related code is as follows.
#include <WINDOWS.H>
#include <stdio.h>
#include <math.h>
#include <malloc.h>
#include <mex.h>
.....
if (fpt==NULL)
{
printf("\n Error: Cannot open input file for reading \n");
}
.......
for (i=0; i<cf_num*nx*nx; i++)
{
fscanf(fpt,"%Lf",&M[i]);
}
....
Would you please give me some help about how to modify the code? Many thanks!
BTW, if nothing changes, the output is incorrect although it can be complied.
0 个评论
采纳的回答
Walter Roberson
2020-9-24
For Visual Studio, %Lf stands for "long double" .
long double in Windows is the same as double. long double in gcc is a larger floating point number. This can lead to incompatibilities.
You should probably be using %lf for double instead of long double: it will not make any difference for Visual Studios and it will prevent problems for other compilers.
MATLAB does not support long double.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Model Predictive Control Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!