1 Востаннє редагувалося Дмитро-Чебурашка (03.05.2016 17:33:24)

Тема: Не можу додати инклюд Hider.hpp: No such file or directory.

Нічого не розумію! Чи то у мене вже мізки на бікрень стали, а то лі де помилка закралася, не розумію я вже.
Начебто і башка сьодні більш менш соображає, а от не бачу. Що за дурниця взагалі?? Ну що за фігня ??

Я щось десь не так роблю, або ж що? Я дійсно нічого не розумію!

На рівному місці така халепа! Я насправді дві години вже казанок лама, як таку просту хфігню подолати .... !!!
Вже й трохи не тямлю.


Справа не в коді, а саме у хідері, бо що ж воно таке, а код я швидше потім сам перепитаю, якщо круто застопорюся, або навпаки заделюся, якщо щось хоч приблизно
прикинутє щось вийде.


9 C:\UTF-8\Doslidnyj\JU\SOs.cpp Hider.hpp: No such file or directory.

Раніше взагалі лаялося так  C:\UTF-8\Doslidnyj\JU\SOs.cpp In file included from C:\UTF-8\Doslidnyj\JU\Hider.hpp                !!!!!!!!!!!!!!!!!!!!!

Додаю проєкт та скрін у ньому.

Я взагалі вже невпевнено себе почуваю, таким бараном!!



#include <windows.h>
#include <fstream>      // std::ifstream, std::ofstream
#include "Hider.hpp"
#include <Hider.hpp>
Post's attachments

JU.7z 56.57 kb, 272 downloads since 2016-05-03 

2

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

А чому двічі інклудите?

Подякували: Дмитро-Чебурашка1

3

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

попробуйте так написати в Hider.hpp можливо це за того що там не було #endif

#ifndef HIDER

#define HIDER



namespace Alphabets
{
  #define Ponyzzia_alfavitu 1024
  #define Verkhivka_alfavitu 1119
}  


#endif
Подякували: Дмитро-Чебурашка1

4 Востаннє редагувалося -=ЮрА=- (03.05.2016 18:31:11)

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

Дмитро-Чебурашка буду відвертим - такої *ріні я давно не бачив(немає інших слів - це об'єктивно й може трішки поблажливо стосовно коду)
По пунктам :
1. підключення hpp(дідько з тим що всі проголошення якось більш менш прийнято давати у файлах з розширенням h) справа в іншому - якщо у тебе локальний Hider.hpp якого дідька пишеш підключення глобального hpp?!

#include <fstream>      // std::ifstream, std::ofstream
#include "Hider.hpp"
//#include <Hider.hpp>//так роблять для системних хедерів та інклудів

далі, у Hider.hpp ти пропустив #endif - запам'ятай назавжди, якщо ти робиш гайд через #ifdef то ЗАВЖДИ його треба закривати, а закривають його директивою #endif

#ifndef HIDER
#define HIDER

namespace Alphabets
{
  #define Ponyzzia_alfavitu 1024
  #define Verkhivka_alfavitu 1119
}  

#endif//ось його ти пропустив


йдемо до коду

 char*** Znak = new char** [newZnak];
  for( int i = 0; i <= newZnak; ++i )
          Znak[ i ] = new int [ 4 ];

- чесно якщо б мій підлеглий приніс мені ось це, я б його вигнав би навіть не розмовляючи(!)
Навіщо тобі *** у тебе тримірний масив?Ні він у тебе двомірний і видіення памяті під нього робиться ось так

char** Znak = new char* [newZnak];
for( int i = 0; i < newZnak; ++i )
      Znak[ i ] = new char [ 4 ];

у тебе окрім мірності масиву невірний специфікатор типу для алоку пам'яті для рядка (замість new int потрібно вказувати базовий тип масиву, тобто у твоємо випадку char)

Але спустившись по коду нижче, відверто скажу закортіло просто закрити форум та піти подихати свіжим повітрям. Ось поясни мені як прогер , це що таке?!!!

if(Znak)  
struct Znak 
 {  
  a : 8; 
  b : 8; 
  c : 8; 
  d : 8;
 };

- тобто ти що оголошуєш структуру лише за умови?Але навіть не це заставило мене випити валідол, поясни що це таке


  a : 8;
  b : 8;
  c : 8;
  d : 8;
};

- що це за (хай простять модери) хр*нь?(!) взагалі тобі відомо як проголошуються мембери структур?Так що друже, я буду відвертий з тобою

Я щось десь не так роблю, або ж що? Я дійсно нічого не розумію!

  ти не бачиш у свому окові дровиняки(дуже великої). Пиши як звучить завдання, спробую наштовхнути як вірно робити, але за умови, що розпповіси у пості як проголошувати структури, бо друже, без цього просто неможливо йти далі.

5

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

атачу проект(на скільки зміг виправив, далі потрібна конретика що робити з текстом із файлу)

Post's attachments

JU_proj.zip 82.41 kb, 275 downloads since 2016-05-03 

Подякували: Дмитро-Чебурашка1

6 Востаннє редагувалося -=ЮрА=- (03.05.2016 18:29:43)

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

Ось так зараз буде працювати
http://replace.org.ua/misc.php?action=pun_attachment&amp;item=1267&amp;download=0

Post's attachments

Untitled.png 122.11 kb, 184 downloads since 2016-05-03 

Подякували: Дмитро-Чебурашка1

7 Востаннє редагувалося Дмитро-Чебурашка (03.05.2016 23:17:19)

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

Дуже дуже дуже дякую!!!!   Коли б не ви, то нікому б мене було учити, чесно, я в найвищому ступені вам вдячний. Я зараз ще напишу.



Ну доки загалом і не варто було б ще писати щось...
якщо у тобі локальний Hider.hpp якого дідька пишеш підключення глобального hpp?!
Я пробував так і так, адже ж не виходило, я створював різні типи проэкта, дивився невидимі символи в хекс редакторові, більше двох годин я не міг підключити один хидер. Я думав, що тут вже не може бути перепони.

Взагалі код ледве розпочатий. Я хвилин за двадцять - тридцять написав його, як би граючи.
І застопорився.

у Hider.hpp ти пропустив #endif - запам'ятай назавжди, якщо ти робиш гайд через #ifdef то ЗАВЖДИ його треба закривати, а закривають його директивою #endif

Дійсно, я цього не знав!! Спасибі!

взагалі тобі відомо як проголошуються мембери структур?

Ні, я ледве пам'ятаю. Скоріше я і не знаю і не пам'ятаю! Що я кручу. Не знаю!





Компіляеться! Я навіть сміюся. Що було ключовим в помилці, я достовірно не зрозумів. Тобто зрозумів, але я не впевнений чому саме хедер не підключавсь. Ну я ще щось напишу!! Можна писати далі.      СПАСИБІ!!!!!!!!!!!!!!

8 Востаннє редагувалося -=ЮрА=- (04.05.2016 08:37:16)

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

Дмитро-Чебурашка, у тебе зовсім погано з проголошеннями структур, я кидаю лінки маю надію, що вони допоможуть.

стосовно вище тобою сказаного, декларації прийнято давати у хедері, тобто створив консольний проект і добавляєш у нього новий хедер(для конкртетики назвимо його header.h). Далі у коді щоб застосувати декларації з цього хедеру його потрібно підключити(так це робиться через директиву #include). Через те що хедер ми створили свій у папці проекту, то він йде як локальний і підключати його слід через лапки(цим ми говоримо лінкеру спочатку шукати хедер у каталозі проекту)
Тобто у нашому випадку коректне підключення хедеру буде таким

#include "header.h"

стосовно #endif я бачу що ти зрозумів, це добре, завжди про це пам'ятай.
Після того як почитаєш за структури, думаю, твій код проекту набере додадкових рис і можливо знову виникнуть труднощі, тоді виложиш його тут у топіку. Успіхів тобі!

Подякували: leofun011

9

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

  • замість

#ifndef HIDER
#define HIDER
 
// Твій код тут
 
#endif

можна писати

#pragma once

// Твій код тут

так буде набагато швидше.

  • Щодо включення заголовкових файлів

Як діють лапки. Уявімо, що у тебе cpp файл є у теці C:\MyProject\, тоді наступні інклуди включатимуть файли з таких шляхів:

#include "header1.h"                // C:\MyProject\header1.h
#include "SubDir\header1.h"         // C:\MyProject\SubDir\header1.h
#include "..\header1.h"             // C:\header1.h
#include "..\AnotherDir\header1.h"  // C:\AnotherDir\header1.h

Тобто лапки використовуються для вказання шляху відносно твого cpp файлу.

Кутові дужки використовуються. щоб сказати компілятору шукати заголовковий файл у всіх шляхах пошуку, які прописані в налаштуваннях твого проекту. VS автоматично додає шляхи до багатьох системних заголовкових файлів.

10 Востаннє редагувалося -=ЮрА=- (04.05.2016 09:59:42)

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

https://en.wikipedia.org/wiki/Pragma_once

In the C and C++ programming languages, #pragma once is a non-standard but widely supported preprocessor directive designed to cause the current source file to be included only once in a single compilation.

https://ru.wikipedia.org/wiki/Pragma_once

Прихований текст

В языках программирования Си и C++ #pragma once — нестандартная, но широко распространенная препроцессорная директива, разработанная для контроля за тем, чтобы конкретный исходный файл при компиляции подключался строго один раз. То есть, #pragma once применяется для тех же целей, что и include guard, но требует меньше кода и не допускает возможности коллизии имён. В наборе компиляторов GCC до версии 3.4 считалась устаревшей и для применения не рекомендовалась.[1] Однако из-за широкого применения это решение было изменено.[2]

- сам у практиці часто юзаю #pragma once, хоча стандарт проти цього...(одного сонячного, чи не дуже, дня цю директиву можуть обізвати depracated/obsolete і новітній компілятор просто не збере проект)

11

Re: Не можу додати инклюд Hider.hpp: No such file or directory.

ну, і для повноти картини додам українською :D

pragma once

У мовах програмування С і С++, #pragma once — це нестандартна але широко поширена директива препроцесора, створена для того щоб змусити включення тіла файлу сирцевого коду (зазвичай заголовного файлу) лише один раз в одній одиниці трансляції. Таким чином, #pragma once виконує ту саму функцію, що і #include guards, але з деякими перевагами, зокрема менша кількість коду, уникнення колізії імен, прискорення швидкості компіляції (в окремих випадках).