Выполнение останавливается автоматически, когда я запускаю программу. Я получаю доступ к этой функции multiplyImages
, Код следующий
#include "rt_nonfinite.h"#include "multiplyImage.h"
/* Function Declarations */
static double rt_roundd_snf(double u);
/* Function Definitions */
static double rt_roundd_snf(double u)
{
double y;
if (fabs(u) < 4.503599627370496E+15) {
if (u >= 0.5) {
y = floor(u + 0.5);
} else if (u > -0.5) {
y = u * 0.0;
} else {
y = ceil(u - 0.5);
}
} else {
y = u;
}
return y;
}
void multiplyImage(const unsigned char img[/*2115216*/6], double parameter, unsigned
char imgout[/*2115216*/6])
{
int i0;
double d0;
unsigned char u0;
/* implements a function that multiplies an image with a parameter */
for (i0 = 0; i0 < 6; i0++)
{
d0 = rt_roundd_snf(parameter * (double)img[i0]);
if (d0 < 256.0)
{
if (d0 >= 0.0) {
u0 = (unsigned char)d0;
} else
{
u0 = 0;
}
} else if (d0 >= 256.0)
{
u0 = MAX_uint8_T;
} else
{
u0 = 0;
}
imgout[i0] = u0;
Ou[i0] = imgout[i0];
}
printf(d0);
}
Когда выполнение приходит к printf, выполнение автоматически останавливается. Img [6] и imgout [6] — просто фиктивные изображения, созданные для проверки работы. Я использую эту функцию в другой основной функции, как описано ниже.
unsigned char test[6];
for (int c = 0; c < color; ++c)
{
for (int h = 0; h < height; ++h)
{
for (int w = 0; w < width; ++w)
{
x = 'R';
Image_Conversion(c, h, w) = x;
test[c*h*w] = Image_Conversion(c, h, w);
std::cout << "Test: " << test[c*w*h];
}
}
}
multiplyImage(&(const unsigned char)test[6], 1, &test[6]);
Было бы замечательно, если бы кто-то мог направить меня в этом вопросе.
«Выполнение автоматически завершается», по-видимому, является эвфемизмом для «моих программных ошибок». d0
имеет тип double, и вы должны сказать printf
об этом факте. Пожалуйста, попробуйте этот код вместо:
printf("%f", d0);