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

G++.exe путь к *.h - C++

Восстановить пароль Регистрация
 
Tester64
394 / 355 / 43
Регистрация: 22.05.2013
Сообщений: 2,454
04.06.2014, 23:17     G++.exe путь к *.h #1
Учусь работать в консоли с g++.exe (из MinGW). В с++ новичок. Перехожу с явы (и Делфи) - h-файлы для меня нечто новое и малопонятное.
Неожиданная проблема: Компилятор не видит H-файл из папки проекта!

так НЕ видит:
C
1
#include <log1.h>
так ВИДИТ:
C
1
#include <d:\mini\log1.h>
Почему нужно указывать полный путь к папке проекта???

Компилирую так (buil.bat):
Bash
1
2
3
d:
cd d:\MinGW\bin\
g++.exe d:\mini\*.cpp -o d:\mini\mini.exe -L"d:\mini\"
Версия компилятора:
g++.exe (GCC) 4.8.1

Ошибка:
d:\mini\main.cpp:8:18: fatal error: log1.h: No such file or directory
#include <log1.h>
^
compilation terminated.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 23:17     G++.exe путь к *.h
Посмотрите здесь:

C++ Путь
путь к файлу C++
Путь до файла C++
C++ Как узнать в программе путь к EXE файлу?
Error spawnin 'mt.exe', 'rc.exe' C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
04.06.2014, 23:30     G++.exe путь к *.h #2
Цитата Сообщение от Tester64 Посмотреть сообщение
H-файл из папки проекта!
имя в кавычки
C++
1
#include "log1.h"
Из стандарта:
16.2/2
A preprocessing directive of the form
C
1
#include <h-char-sequence> new-line
searches a sequence of implementation-defined places for a header identified uniquely by the specified sequence between the < and > delimiters, and causes the replacement of that directive by the entire contents of the header. How the places are specified or the header identified is implementation-defined.

16.2/3
A preprocessing directive of the form
C
1
#include "q-char-sequence" new-line
causes the replacement of that directive by the entire contents of the source file identified by the specified sequence between the " delimiters. The named source file is searched for in an implementation-defined manner. If this search is not supported, or if the search fails, the directive is reprocessed as if it read
C
1
#include <h-char-sequence> new-line
with the identical contained sequence (including > characters, if any) from the original directive.
Tester64
394 / 355 / 43
Регистрация: 22.05.2013
Сообщений: 2,454
08.06.2014, 07:05  [ТС]     G++.exe путь к *.h #3
Неа! ошибка оказалась в нехватке ключа -I"d:\mini\" в компиляторе!
Компилятор успешно видит и
#include <log1.h>
и
#include "log1.h"
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
08.06.2014, 08:11     G++.exe путь к *.h #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Tester64 Посмотреть сообщение
Неа! ошибка оказалась в нехватке ключа -I"d:\mini\" в компиляторе!
C++
1
#include <log1.h>
В таком варианте файл ищется по путям include файлов (перечисленных в -I)

C++
1
#include "log1.h"
В таком варианте файл ищется сначала в каталоге .cpp файла, а потом по путям include файлов.

И в стандарте это написано.
Tester64
394 / 355 / 43
Регистрация: 22.05.2013
Сообщений: 2,454
08.06.2014, 09:04  [ТС]     G++.exe путь к *.h #5
спасибо! попробую разницу... Я сначала нашел ключ -I и у меня заработало... а потом попробовал кавычки - разницы небыло... теперь попробую без ключа!
Yandex
Объявления
08.06.2014, 09:04     G++.exe путь к *.h
Ответ Создать тему
Опции темы

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