Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/79: Рейтинг темы: голосов - 79, средняя оценка - 4.95
1 / 1 / 0
Регистрация: 03.01.2016
Сообщений: 9

Ошибка компиляции: 'nullptr' was not declared in this scope

03.10.2016, 19:48. Показов 16708. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При компиляции этого кода
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <pthread.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <inttypes.h>
 
using namespace std;
 
// -------
// part from WinAPI for BMP
typedef uint16_t WORD;
typedef uint32_t DWORD;
typedef int32_t LONG;
 
#pragma pack(push,1)
typedef struct tagBITMAPFILEHEADER {
  WORD  bfType;
  DWORD bfSize;
  WORD  bfReserved1;
  WORD  bfReserved2;
  DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
 
typedef struct tagBITMAPINFOHEADER {
  DWORD biSize;
  LONG  biWidth;
  LONG  biHeight;
  WORD  biPlanes;
  WORD  biBitCount;
  DWORD biCompression;
  DWORD biSizeImage;
  LONG  biXPelsPerMeter;
  LONG  biYPelsPerMeter;
  DWORD biClrUsed;
  DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
#pragma pack(pop)
// -------
 
struct MyArgs
{
    int start;
    int end;
};
void* thread_func(void* arg);
 
int main(int argc, char *argv[])
{
    int inputFile = open("input.bmp", O_RDONLY);
    struct stat s;
    fstat(inputFile, &s);
    if (s.st_size < (ssize_t)(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER))) {
        return 1;
    }
    uint8_t* data = new uint8_t[s.st_size];
    ssize_t r = read(inputFile, data, s.st_size);
    if (r != s.st_size) {
        return 1;
    }
    close(inputFile);
    BITMAPFILEHEADER* bfh = (BITMAPFILEHEADER*) data;
    BITMAPINFOHEADER* bih = (BITMAPINFOHEADER*) (data + sizeof(BITMAPFILEHEADER));
    const int bytesPerPixel = 4;
    if (bfh->bfType != 'MB' || bih->biBitCount != bytesPerPixel * 8) {
        return 1;
    }
    uint8_t* img = data + bfh->bfOffBits;
 
    // starting new thread
    pthread_t p;
    MyArgs* args = new MyArgs();
    args->start = 0;
    args->end = 1000;
    pthread_create(&p, nullptr, thread_func, (void*) args);
    //
 
    for (int i = 0; i < bih->biWidth * bih->biHeight; i++)
    {
        uint8_t R = img[i * bytesPerPixel + 3];
        uint8_t G = img[i * bytesPerPixel + 2];
        uint8_t B = img[i * bytesPerPixel + 1];
        img[i * bytesPerPixel + 3] = (R + G + B) / 3;
        img[i * bytesPerPixel + 2] = (R + G + B) / 3;
        img[i * bytesPerPixel + 1] = (R + G + B) / 3;
    }
 
    // waiting for new thread
    pthread_join(p, nullptr);
    //
 
    int outputFile = open("output.bmp", O_WRONLY | O_CREAT, 0664);
    r = write(outputFile, data, s.st_size);
    if (r != s.st_size) {
        return 1;
    }
    close(outputFile);
    return 0;
}
 
void* thread_func(void* arg)
{
    MyArgs* args = (MyArgs*) arg;
    args->start; args->end;
    // ...
    delete args;
}
возникает такая ошибка:

1.срр:65:24: warning: multi-character character constant [-Wmultichar] if (bfh->bfType != 'MB' || bih->biBitCount != bytesPerPixel * 8) {
l.cpp: In function 'int main(int, char**)':
1.cpp:75:24: error: 'nullptr' was not declared in this scope pthread_create(&p, nullptr, thread_func, (void*) args);

Подскажите, что нужно сделать что бы ее устранить...
Миниатюры
Ошибка компиляции: 'nullptr' was not declared in this scope  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2016, 19:48
Ответы с готовыми решениями:

'nullptr' was not declared in this scope
'nullptr' was not declared in this scope Какой флаг нужно добавить?

Error: ‘nullptr’ was not declared in this scope
Такой вопрос решил немного поэксперименнтировать с кодом. Когда я компилирую этот код в cpp.sh и gdb online компиляторами ошибок не...

Ошибка was not declared in this scope при компиляции C++
Написал такую программу: #include&lt;conio.h&gt; using namespace std; int main() { float pi = 3.1415926535; double x, Eps,...

10
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
03.10.2016, 20:04
Цитата Сообщение от NokiaMan Посмотреть сообщение
Подскажите, что нужно сделать что бы ее устранить...
Цитата Сообщение от NokiaMan Посмотреть сообщение
1.срр:65:24: warning: multi-character character constant
заменить на hex-значение
Цитата Сообщение от NokiaMan Посмотреть сообщение
1.cpp:75:24: error: 'nullptr' was not declared in this scope
добавить флаг -std=c++11
+ одна ошибка, которая появится позже: "cant find pthread_create"
для ее устранения добавить флаг -lpthread
0
1 / 1 / 0
Регистрация: 03.01.2016
Сообщений: 9
03.10.2016, 20:12  [ТС]
Цитата Сообщение от Max Dark Посмотреть сообщение
заменить на hex-значение
как это сделать?

Я дописал -std=c++11 -lpthread, но ничего не изменилось
Миниатюры
Ошибка компиляции: 'nullptr' was not declared in this scope  
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
03.10.2016, 20:25
Цитата Сообщение от NokiaMan Посмотреть сообщение
как это сделать?
примерно так
C++
1
bfh->bfType != (((WORD)'M' << 8) & (WORD)'B')
Цитата Сообщение от NokiaMan Посмотреть сообщение
но ничего не изменилось
немного не тот порядок флагов
Bash
1
g++ -std=c++11 -Wall -Wpedantic -Werror 1.cpp -o prog_name -lm -lpthread
-Wall -Wpedantic -Werror - обработка всех предупреждений и преобразование их в ошибки
0
1 / 1 / 0
Регистрация: 03.01.2016
Сообщений: 9
03.10.2016, 20:40  [ТС]
Цитата Сообщение от Max Dark Посмотреть сообщение
bfh->bfType != (((WORD)'M' << 8) & (WORD)'B')
это можно в любой части программы написать?

написал в main.. появились новые ошибки
Миниатюры
Ошибка компиляции: 'nullptr' was not declared in this scope  
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
03.10.2016, 20:48
Цитата Сообщение от NokiaMan Посмотреть сообщение
это можно в любой части программы написать?
нет, нужно заменить в той строке, куда указывает 1я ошибка(65я строка)
Цитата Сообщение от NokiaMan Посмотреть сообщение
появились новые ошибки
2я и 3я ошибки: компилятор говорит, что 103я строка совершенно бесполезна
4я - то, что у функции thread_func отсутствует возврат результата - добавьте return nulptr;
0
1 / 1 / 0
Регистрация: 03.01.2016
Сообщений: 9
03.10.2016, 22:11  [ТС]
Max Dark, вот, что получилось. Вместо ошибок теперь предупреждения
Миниатюры
Ошибка компиляции: 'nullptr' was not declared in this scope  
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
03.10.2016, 22:35
Цитата Сообщение от NokiaMan Посмотреть сообщение
Вместо ошибок теперь предупреждения
C++
1
2
3
4
5
6
7
8
9
10
11
12
if (bfh->bfType != 'MB' || bih->biBitCount != bytesPerPixel * 8) {//'MB' - это что такое? Это multicharacters литерал, об этом Вас и предупреждают. Его значение зависит от реализации.
        return 1;
    }
//...
void* thread_func(void* arg)
{
    MyArgs* args = (MyArgs*) arg;
    args->start; args->end;//<--эти две записи ничего не делают
    // ...
    delete args;
    //где return?
}
0
1 / 1 / 0
Регистрация: 03.01.2016
Сообщений: 9
03.10.2016, 23:20  [ТС]
Croessmah, я заменил (bfh->bfType != 'MB' || bih->biBitCount != bytesPerPixel * 8) на bfh->bfType != (((WORD)'M' << 8) & (WORD)'B'), удалил те записи, что ничего не делают и дописал return.
Вот что получилось:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <pthread.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <inttypes.h>
 
using namespace std;
 
 
 
// -------
// part from WinAPI for BMP
typedef uint16_t WORD;
typedef uint32_t DWORD;
typedef int32_t LONG;
 
#pragma pack(push,1)
typedef struct tagBITMAPFILEHEADER {
  WORD  bfType;
  DWORD bfSize;
  WORD  bfReserved1;
  WORD  bfReserved2;
  DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
 
typedef struct tagBITMAPINFOHEADER {
  DWORD biSize;
  LONG  biWidth;
  LONG  biHeight;
  WORD  biPlanes;
  WORD  biBitCount;
  DWORD biCompression;
  DWORD biSizeImage;
  LONG  biXPelsPerMeter;
  LONG  biYPelsPerMeter;
  DWORD biClrUsed;
  DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
#pragma pack(pop)
// -------
 
struct MyArgs
{
    int start;
    int end;
};
void* thread_func(void* arg);
 
int main(int argc, char *argv[])
{
    int inputFile = open("input.bmp", O_RDONLY);
    struct stat s;
    fstat(inputFile, &s);
    if (s.st_size < (ssize_t)(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER))) {
        return 1;
    }
    uint8_t* data = new uint8_t[s.st_size];
    ssize_t r = read(inputFile, data, s.st_size);
    if (r != s.st_size) {
        return 1;
    }
    close(inputFile);
    BITMAPFILEHEADER* bfh = (BITMAPFILEHEADER*) data;
    BITMAPINFOHEADER* bih = (BITMAPINFOHEADER*) (data + sizeof(BITMAPFILEHEADER));
    const int bytesPerPixel = 4;
        bth->bfType != (((WORD)'M' << 8) & (WORD)'B') {
        return 1;
    }
    uint8_t* img = data + bfh->bfOffBits;
 
    // starting new thread
    pthread_t p;
    MyArgs* args = new MyArgs();
    args->start = 0;
    args->end = 1000;
    pthread_create(&p, nullptr, thread_func, (void*) args);
    //
 
    for (int i = 0; i < bih->biWidth * bih->biHeight; i++)
    {
        uint8_t R = img[i * bytesPerPixel + 3];
        uint8_t G = img[i * bytesPerPixel + 2];
        uint8_t B = img[i * bytesPerPixel + 1];
        img[i * bytesPerPixel + 3] = (R + G + B) / 3;
        img[i * bytesPerPixel + 2] = (R + G + B) / 3;
        img[i * bytesPerPixel + 1] = (R + G + B) / 3;
    }
 
    // waiting for new thread
    pthread_join(p, nullptr);
    //
 
    int outputFile = open("output.bmp", O_WRONLY | O_CREAT, 0664);
    r = write(outputFile, data, s.st_size);
    if (r != s.st_size) {
        return 1;
    }
    close(outputFile);
    return 0;
}
 
void* thread_func(void* arg)
{
    //MyArgs* args = (MyArgs*) arg;
    //args->start; args->end;
    // ...
    delete args;
    return nulptr;
}
Теперь такие ошибки
Миниатюры
Ошибка компиляции: 'nullptr' was not declared in this scope  
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
04.10.2016, 08:13
Лучший ответ Сообщение было отмечено NokiaMan как решение

Решение

Цитата Сообщение от NokiaMan Посмотреть сообщение
Теперь такие ошибки
вы явно старый файл компилируете...
исправленный вариант(как минимум компилируется)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <pthread.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <inttypes.h>
 
using namespace std;
 
 
 
// -------
// part from WinAPI for BMP
typedef uint16_t WORD;
typedef uint32_t DWORD;
typedef int32_t LONG;
 
#pragma pack(push,1)
typedef struct tagBITMAPFILEHEADER {
  WORD  bfType;
  DWORD bfSize;
  WORD  bfReserved1;
  WORD  bfReserved2;
  DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
 
typedef struct tagBITMAPINFOHEADER {
  DWORD biSize;
  LONG  biWidth;
  LONG  biHeight;
  WORD  biPlanes;
  WORD  biBitCount;
  DWORD biCompression;
  DWORD biSizeImage;
  LONG  biXPelsPerMeter;
  LONG  biYPelsPerMeter;
  DWORD biClrUsed;
  DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
#pragma pack(pop)
// -------
 
struct MyArgs
{
    int start;
    int end;
};
void* thread_func(void* arg);
 
int main(int argc, char *argv[])
{
    int inputFile = open("input.bmp", O_RDONLY);
    struct stat s;
    fstat(inputFile, &s);
    if (s.st_size < (ssize_t)(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER))) {
        return 1;
    }
    uint8_t* data = new uint8_t[s.st_size];
    ssize_t r = read(inputFile, data, s.st_size);
    if (r != s.st_size) {
        return 1;
    }
    close(inputFile);
    BITMAPFILEHEADER* bfh = (BITMAPFILEHEADER*) data;
    BITMAPINFOHEADER* bih = (BITMAPINFOHEADER*) (data + sizeof(BITMAPFILEHEADER));
    const int bytesPerPixel = 4;
    const WORD MB = (((WORD)'M' << 8) & (WORD)'B');
    if (bfh->bfType != MB || bih->biBitCount != bytesPerPixel * 8) {
        return 1;
    }
    uint8_t* img = data + bfh->bfOffBits;
 
    // starting new thread
    pthread_t p;
    MyArgs* args = new MyArgs();
    args->start = 0;
    args->end = 1000;
    pthread_create(&p, nullptr, thread_func, (void*) args);
 
    for (int i = 0; i < bih->biWidth * bih->biHeight; i++)
    {
        uint8_t R = img[i * bytesPerPixel + 3];
        uint8_t G = img[i * bytesPerPixel + 2];
        uint8_t B = img[i * bytesPerPixel + 1];
        img[i * bytesPerPixel + 3] = (R + G + B) / 3;
        img[i * bytesPerPixel + 2] = (R + G + B) / 3;
        img[i * bytesPerPixel + 1] = (R + G + B) / 3;
    }
 
    // waiting for new thread
    pthread_join(p, nullptr);
    //
 
    int outputFile = open("output.bmp", O_WRONLY | O_CREAT, 0664);
    r = write(outputFile, data, s.st_size);
    if (r != s.st_size) {
        return 1;
    }
    close(outputFile);
    return 0;
}
 
void* thread_func(void* arg)
{
    MyArgs* args = (MyArgs*) arg;
    //args->start; args->end;
    // ...
    delete args;
    return nullptr;
}
лог сборки:
Bash
1
2
3
4
5
6
7
8
9
max@node:~/sources/cxx/dummy
$> g++ -std=c++11 -Wall -Wpedantic -Werror -c bmp.cpp
max@node:~/sources/cxx/dummy
$> g++ bmp.o -o bmp -lm -lpthread
max@node:~/sources/cxx/dummy
$> ls -l
-rwxr-xr-x 1 max max 9632 окт  4 08:07 bmp
-rw-r--r-- 1 max max 2589 окт  4 08:07 bmp.cpp
-rw-r--r-- 1 max max 2960 окт  4 08:07 bmp.o

Не по теме:

а зачем вам здесь отдельный поток, если вы его не используете?

1
1 / 1 / 0
Регистрация: 03.01.2016
Сообщений: 9
04.10.2016, 22:00  [ТС]
Max Dark, спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.10.2016, 22:00
Помогаю со студенческими работами здесь

Ошибка was not declared in this scope при компиляции
Простой код, но Arduino IDE напрочь отказывается принимать переменные. Что за глюк или я что-то неправильно делаю? void setup()...

Ошибка при компиляции error: 'endl' was not declared in this scope
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; void main() { double a, b, x, h, r, s; int n, zn = -1, k; puts(&quot;Input...

При компиляции выдается ошибка [Error] 'randomize' was not declared in this scope
Доброго времени суток. Есть код написанный на Си, но при компиляции в DevC++ выдает ошибку 'randomize' was not declared in this scope ...

'arr' was not declared in this scope 'sum' was not declared in this scope такие вот ошибки.(
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main () { setlocale(LC_ALL, &quot;rus&quot;); ...

Ошибка was not declared in this scope
Как мне её исправить polimorfizm1881.cpp: In function ‘int main()’: polimorfizm1881.cpp:38:29: error: ‘Samvel’ was not declared in...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru