Форум программистов, компьютерный форум CyberForum.ru

Ошибка при компиляции в VS 2010 - C++

Восстановить пароль Регистрация
 
__sirroko
4 / 4 / 3
Регистрация: 03.03.2013
Сообщений: 55
30.09.2013, 03:17     Ошибка при компиляции в VS 2010 #1
Доброго времени суток!

При попытке скомпилировать в 10-й студии возникает такая ошибка:
C
1
2
main.c(27): error C2275: bmp_rgb: недопустимое использование этого типа в качестве выражения
func.h(37): см. объявление "bmp_rgb"
Изначально код писался под линь, там все работает...

Пробовал переделать на new/delete, пробовал заменить typedef просто структурой. Не помогло.
Соображалка уже на работет (((
Буду рад помощи)

p.s. Исходники почему-то не загружаются, поэтому скину так...

main.c
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#include <stdlib.h>
 
#include "func.h"
 
int main()
{
    FILE * fd; /* файловый дискриптор */
    const char * origin_file = "origin.bmp";
    const char * modif_file = "modif.bmp";
    bmp_file_header BH;
    bmp_info_header BI;
 
    /* открыть катинку */
    fd = fopen(origin_file, "rb");
    if (!fd)
    {
        fputs("Не удалось открыть исходный файл.", stderr);
        return 1;
    }
 
    /* прочитать заголовок */
    fread(&BH, 1, sizeof(BH), fd);
    fread(&BI, 1, sizeof(BI), fd);
 
    /* создаем массив нужной величины */
    bmp_rgb * array = (bmp_rgb *)malloc(BI.width * BI.height * 3);
 
    /* записать байты из картинки в массив */
    fread(array, 1, BI.width * BI.height * 3, fd);
 
    /* закрыть исходный файл */
    fclose(fd);
 
    // ф-я, которая рисует сетку
 
    /* ф-я, которая регулирует яркость */
    change_brightness(array, BI.width * BI.height);
 
    /* создать новый файл */
    fd = fopen(modif_file, "wb");
    if (!fd)
    {
        fputs("Не удалось создать новый файл.", stderr);
        return 1;
    }
 
    /* записать в него заголовок */
    fwrite(&BH, 1, sizeof(BH), fd);
    fwrite(&BI, 1, sizeof(BI), fd);
 
    /* саму картинку */
    fwrite(array, 1, BI.width * BI.height * 3, fd);
 
    /* закрыть новый файл */
    fclose(fd);
 
    /* освобождаем выделенную память */
    free(array);
 
    return 0;
}

func.c
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "func.h"
 
void draw_net(bmp_rgb * array, unsigned int size)
{
 
}
 
void change_brightness(bmp_rgb * array, unsigned int size)
{
    float factor = 1.9;
 
    for (int i = 0; i < size; i++)
    {
        array[i].red *= factor;
        array[i].green *= factor;
        array[i].blue *= factor;
    }
}
func.h
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdint.h>
 
/* структура, описывающая заголовок bmp-файла */
#pragma pack(push,1)
typedef struct _bmp_file_header
{
    uint16_t type;      /* сигнатура BM */
    uint32_t size;      /* размер файла */
    uint16_t reserved1; 
    uint16_t reserved2;
    uint32_t offset;    /* смещение от bmp_file_header до
                        битов изображения */
} bmp_file_header;
 
typedef struct _bmp_info_header
{
    uint32_t size;        /* размер файла */
    uint32_t width;       /* ширина (в пикселях) */
    uint32_t height;      /* высота (в пикселях) */
    uint16_t planes;      /* кол-во плоскостей */
    uint16_t bit_count;   /* сколько битов на пиксель */
    uint32_t compression; /* способ сжатия */
    uint32_t sizeimage;   /* размер картинки, если сжата */
    uint32_t x_pels_per_meter;
    uint32_t y_pels_per_meter;
    uint32_t clr_used;
    uint32_t clr_important;
} bmp_info_header;
#pragma pack(pop)
 
/* структура, описывающая пиксель */
typedef struct _bmp_rgb
{
    uint8_t red;
    uint8_t blue;
    uint8_t green;
} bmp_rgb;
 
void draw_net(bmp_rgb * array, unsigned int size);
void change_brightness(bmp_rgb * array, unsigned int size);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 03:17     Ошибка при компиляции в VS 2010
Посмотрите здесь:

visual studio 2010 ultimate. ошибка при компиляции!!! C++
Visual Studio 2010 + Windows 7 x64. Ошибки при компиляции C++
C++ Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы
C++ Ошибка компиляции Unable to start program в любой Viual studio 2010
Вижуал СИпп 2010 ошибка при компиляции C++
C++ Studio 2010 - как при компиляции сохранять файл ассемблерного листинга?
C++ Ошибка памяти при выполнении, при компиляции не выводит ошибки
Ошибка при компиляции - Microsoft Visual C++ 2010, экспресс-выпуск C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.09.2013, 03:56     Ошибка при компиляции в VS 2010 #2
У меня, на 10 студии, так компилируется:
1>------ Перестроение всех файлов начато: проект: LAB, Конфигурация: Debug Win32 ------
1> main.cpp
1>main.cpp(15): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(234): см. объявление "fopen"
1>main.cpp(41): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(234): см. объявление "fopen"
1> func.cpp
1>func.cpp(10): warning C4305: инициализация: усечение из "double" к "float"
1>func.cpp(12): warning C4018: <: несоответствие типов со знаком и без знака
1>func.cpp(14): warning C4244: *=: преобразование "float" в "uint8_t", возможна потеря данных
1>func.cpp(15): warning C4244: *=: преобразование "float" в "uint8_t", возможна потеря данных
1>func.cpp(16): warning C4244: *=: преобразование "float" в "uint8_t", возможна потеря данных
1> Создание кода...
1> LAB.vcxproj -> D:\MY C++Projects\LAB\Debug\LAB.exe
========== Перестроение всех: успешно: 1, с ошибками: 0, пропущено: 0 ==========
Yandex
Объявления
30.09.2013, 03:56     Ошибка при компиляции в VS 2010
Ответ Создать тему
Опции темы

Текущее время: 09:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru