Читал в одной книге, что если вам нужно делать одно действие несколько раз, то можно создать «void», в котором прописать это действие и вызывать его по необходимости. Я это и сделал и при попытке скомпилировать мне выдает ошибку C3861: «Crypt: идентификатор не определен». Кода пока в ней нету, это только каркас.
#include "stdafx.h"
#include <iostream>
#include <iso646.h>
#include <cstring>
#include <cstdio>
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
int key, i, n, func = 0;
char original[80];
char code;
cout << "Что вы хотите выполнить: шифрование(1) или дешифрование(2): ";
cin >> func;
if (func == 1) {
Crypt();
}
else if (func == 2) {
}
else
cout << "Вы выбрали неверное действие." << endl;
system("pause");
return 0;
}
void Crypt() {
cout << "privet?";
}
void encrypt() {
}
void’ы находятся вне int main если что
I have a problem with my code. Unfortunately, when compiling I get these errors all the time. What can this be caused by and how to fix it?
error C3861: ‘print’: identifier not found
My code:
main.cpp
#include "pojazdy.h"
#include <iostream>
using namespace std;
int main()
{
Pojazdy** poj;
int size{ 0 }, index{ 0 };
Petla(poj, size);
print(poj, size);
wyrejestruj(poj,size,0);
print(poj, size);
wyrejestruj(poj,size);
return 0;
}
pojazdy.h
#ifndef pojazdy_h
#define pojazdy_h
#include <iostream>
#include <cstdlib>
using namespace std;
class Pojazdy
{
public:
string typ;
string marka;
string model;
string z_dod;
int ilosc;
int cena;
void dodaj();
void d_pojazd(Pojazdy**& pojazdy, int& size);
void wyrejestruj(Pojazdy**& pojazdy, int& size, int index);
void print(Pojazdy** pojazdy, int size);
void Petla(Pojazdy**& p, int& size);
//void wyswietl();
int get_ilosc() { return ilosc; }
string get_typ() { return typ; }
string get_marka() { return marka; }
string get_model() { return model; }
int get_cena() { return cena; }
void set_ilosc(int x);
};
#endif
pojazdy.cpp
#include "pojazdy.h"
#include <iostream>
using namespace std;
void Pojazdy::set_ilosc(int x) { ilosc = x; }
void Pojazdy::dodaj()
{
cout << "DODAWANIE POJAZDU..." << endl;
cout << "Podaj typ pojazdu:";
cin >> typ;
cout << "Podaj marke pojazdu: ";
cin >> marka;
cout << "Podaj model pojazdu: ";
cin >> model;
cout << "Dodaj cene pojazdu: ";
cin >> cena;
}
void Petla(Pojazdy**& p, int& size) {
char z_dod;// = 'N';
do {
d_pojazd(p, size); //odpowiada za dodawnie
p[size - 1]->dodaj();
cout << "Czy chcesz zakonczyc dodawanie? Jesli tak, wcisnij Y/N: ";
cin >> z_dod;
} while (z_dod == 'N' || z_dod == 'n');//while (p[size]->z_dod == "N" ||p[size]->z_dod == "n");
}
void print(Pojazdy** pojazdy, int size) {
std::cout << "====================================" << std::endl;
for (int i{ 0 }; i < size; i++)
std::cout << "Typ: " << pojazdy[i]->get_typ() << " Marka: " << pojazdy[i]->get_marka() << " Model: " << pojazdy[i]->get_model() << " Cena: " << pojazdy[i]->get_model() << std::endl;
}
void wyrejestruj(Pojazdy**& pojazdy, int& size) {
for (size_t i{ 0 }; i < size; i++)
delete pojazdy[i];
delete[] pojazdy;
size = 0;
pojazdy = NULL;
}
void wyrejestruj(Pojazdy**& pojazdy, int& size, int index) {
if (index < size) {
Pojazdy** temp = new Pojazdy * [size - 1];
short int j{ -1 };
for (size_t i{ 0 }; i < size; i++) {
if (i != index) {
j++;
temp[j] = pojazdy[i];
}
}
delete[] pojazdy;
--size;
pojazdy = temp;
}
else
std::cout << "Pamiec zwolniona!" << std::endl;
}
void d_pojazd(Pojazdy**& pojazdy, int& size) {
Pojazdy** temp = new Pojazdy * [size + 1];
if (size == 0)
temp[size] = new Pojazdy;
else {
for (int i{ 0 }; i < size; i++)
temp[i] = pojazdy[i];
delete[] pojazdy;
temp[size] = new Pojazdy;
}
++size;
pojazdy = temp;
}
I used #ifndef
, #define
, #endif
and #pragma once
, but none of them work. I will be really grateful for every code, I am already tired of this second hour. And forgive the non-English variables and function names for them — it’s university code, so I didn’t feel the need.
01.04.2016, 22:52. Показов 41804. Ответов 2
Не суть важен текст программы, как то, что у меня не получается подключить функции.
Выдает ошибку:
С3861 «название функции»: идентификатор не найден
Подскажите, пожалуйста, что делать.
Вот что я нашел:
]identifier: идентификатор не найден
Компилятору не удалось разрешить ссылку на идентификатор даже при поиске с зависимостью от аргументов.
Чтобы устранить эту ошибку, проверьте написание и регистр объявления идентификатора. Убедитесь, что операторы разрешения области действия и директивы using пространства имен используются правильно. Если идентификатор объявляется в файле заголовка, убедитесь, что заголовок включен до ссылки на него. Кроме того, убедитесь, что идентификатор не исключен с помощью директив условной компиляции.
Но, честно говоря, не особо понял что надобно делать.
Может, я что-то не подключил?
А вообще, в начале всего этого просто выделяется память для динамического двумерного массива.
C++ | ||
|
P.S. я не знаю насколько правильный весь код. Сразу извиняюсь за корявость
P.S.S Ошибку он мне выдает на каждое объявление функции. Всех функций
0
почему компилятор пишет что
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(61,2): error C3861: set_assign: идентификатор не найден
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(62,2): error C3861: write_assign: идентификатор не найден
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(68,2): error C3861: set_assign: идентификатор не найден
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(69,2): error C3861: write_assign: идентификатор не найден
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(71,7): error C3861: sum: идентификатор не найден
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(74,2): error C3861: write_assign: идентификатор не найден
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(76,7): error C3861: sub: идентификатор не найден
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(79,2): error C3861: write_assign: идентификатор не найден
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(81,7): error C3861: mul: идентификатор не найден
1>C:UsersUsersourcereposLaboratorka1Laboratorka1Source.cpp(84,2): error C3861: write_assign: идентификатор не найден?
#include <iostream>
//#include <conio.h>
using namespace std;
struct kom {
double real, image;
//private:
kom set_assign(double y1, double y2, kom& math)
{
math.real = y1;
math.image = y2;
return math;
}
void write_assign(kom math)
{
if (math.image >= 0) {
cout << math.real << "+" << math.image << "i";
}
else {
cout << math.real << math.image << "i";
}
}
kom sum(kom m1, kom m2)
{
kom m3;
m3.real = m1.real + m2.real;
m3.image = m1.image + m2.image;
return m3;
}
kom sub(kom m1, kom m2)
{
kom m3;
m3.real = m1.real - m2.real;
m3.image = m1.image - m2.image;
return m3;
}
kom mul(kom m1, kom m2)
{
kom m3;
m3.real = m1.real * m2.real;
m3.image = m1.image * m2.image;
return m3;
}
};
int main(void)
{
double y1 = 0;
double y2 = 0;
kom math1;
kom math2;
kom math3;
kom m1;
kom m2;
kom m3;
cin >> y1;
cin >> y2;
set_assign(y1, y2, math1);
write_assign(math1);
cout << endl;
cin >> y1;
cin >> y2;
set_assign(y1, y2, math2);
write_assign(math2);
m3 = sum(math1, math2);
cout << endl;
cout << "Sum:" << 'n';
write_assign(m3);
m3 = sub(math1, math2);
cout << endl;
cout << "Sub:" << 'n';
write_assign(m3);
m3 = mul(math1, math2);
cout << endl;
cout << "Mul:" << 'n';
write_assign(m3);
return 0;
}
Просто структура работала. Я внёс все функции внутрь структуры.
- Remove From My Forums
-
Вопрос
-
Код взят из журнала MSDN «C++ Введение в C++ AMP».
#include <amp.h> // заголовочный файл C++ AMP #include <iostream> // для std::cout и т. д. using namespace concurrency; // так меньше набирать кода :) using std::vector;// то же самое; берется из <vector> в amp.h void perform_calculation( vector<int> & vA, vector<int> & vB, vector<int> & vC, int M, int N) { extent<2> e(M, N); array_view<int, 2> a(e, vA), b(e, vB); array_view<int, 2> c(e, vC); c.discard_data(); index<2> idx(0, 0); parallel_for_each(e, [=](index<2> idx) restrict(amp) { c[idx] = a[idx] + b[idx]; }); c.synchronize(); } void do_it() { // Строки и столбцы для матрицы const int M = 1024; const int N = 1024; // Создаем хранилище для матрицы указанных размеров vector<int> vA(M * N); vector<int> vB(M * N); // Заполняем матричные объекты int i = 0; std::generate(vA.begin(), vA.end(), [&i]() {return i++; }); std::generate(vB.begin(), vB.end(), [&i]() {return i--; }); // Выходное хранилище для матричных вычислений vector<int> vC(M * N); perform_calculation(vA, vB, vC, M, N); } int main() { do_it(); std::cout << "Hit any key to exit..." << std::endl; std::cin.get(); }
Код пытаюсь запустись в среде Visual Studio 2019. Предварительно никаких ошибок не находит, но при компиляции выдаёт:
amp.h(2616): error C3861: _Access: идентификатор не найден.
error C3588: приведение «unknown-type» к «void *» не поддерживается в коде, ограниченном AMP
Не совсем понимаю, что я делаю не так, если даже код с сайта MSDN не компилируется. Пробовал на нескольких компьютерах — выдаёт одну и ту же ошибку.
Ответы
-
Нашёл решение проблемы.
В amp.h на 2616 строчке перед _Access нужно было добавить this->
void * _Ptr = this->_Access(_Read_write_access, _Index);
После этого проблема была устранена.
-
Помечено в качестве ответа
14 августа 2019 г. 12:13
-
Помечено в качестве ответа