Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2013, 12:54   #1
heret1c
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 11
Восклицание Как исправить ошибку при компиляции в Linux(gcc)

При компиляции в Linux компилятор выдает вот такие ошибки:

Код:
gcc -c main.cpp -lpthread
main.cpp: В функции «int main()»:
main.cpp:7:53: ошибка: нет подходящей функции для вызова «kursach::processInfo::processInfo(const int&)»
main.cpp:7:53: замечание: candidates are:
defines.h:60:12: замечание: kursach::processInfo::processInfo()
defines.h:60:12: замечание:   candidate expects 0 arguments, 1 provided
defines.h:60:12: замечание: kursach::processInfo::processInfo(const kursach::processInfo&)
defines.h:60:12: замечание:   no known conversion for argument 1 from «const int» to «const kursach::processInfo&»
main.cpp:14:5: ошибка: нет декларации «LOG_PIDS» в этой области видимости
main.cpp:112:14: ошибка: нет декларации «pID» в этой области видимости
Уже не знаю где копать (искать ошибки). А нужно сделать очень срочно. Помогите исправить ошибки и откомпилить прогу.
Вложения
Тип файла: zip курсач.zip (20.4 Кб, 8 просмотров)
heret1c вне форума Ответить с цитированием
Старый 25.05.2013, 13:04   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
main.cpp: В функции «int main()»:
main.cpp:7:53: ошибка: нет подходящей функции для вызова «kursach::processInfo::processInfo(const int&)»
Код:
struct processInfo {
        processColor pc;
        pid_t pID;
        pid_t ppID;
        FILE *outfile;
        int fifo;
        int *pipeFD;
    };

//...
int main()
{
    processInfo *info = new processInfo(THREAD_COUNT);
И чего Вы ожидали? Вы создаёте объект (один объект, если ещё этого не осознали) типа processInfo, передавая в качестве аргумента целое число. Однако processInfo - это структура, для которой нет конструктора, принимающего целое число.

Цитата:
main.cpp:14:5: ошибка: нет декларации «LOG_PIDS» в этой области видимости
Даже не знаю, что бы это могло значить... наверное, то, что компилятор не смог найти, кто такой LOG_PIDS и с чем его едят? Единственное, что нашёл я - макрос LOG_PIDS().
Цитата:
main.cpp:112:14: ошибка: нет декларации «pID» в этой области видимости
То же недоумение. Я pID тоже не нашёл, так что присоединяюсь к компилятору.
Abstraction вне форума Ответить с цитированием
Старый 25.05.2013, 22:17   #3
heret1c
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Даже не знаю, что бы это могло значить... наверное, то, что компилятор не смог найти, кто такой LOG_PIDS и с чем его едят? Единственное, что нашёл я - макрос LOG_PIDS().
А разве компилятор не должен подставить вместо LOG_PIDS определенное для него выражение? Дело в том, что осталась только эта ошибка. Помогите пожалуйста. А может с LOG_PIDS сделать отдельную функцию? И что-то не совсем понятно, а почему остальные макросы компилятор распознает нормально.

Последний раз редактировалось heret1c; 25.05.2013 в 22:20.
heret1c вне форума Ответить с цитированием
Старый 26.05.2013, 00:25   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
А разве компилятор не должен подставить вместо LOG_PIDS определенное для него выражение?
Препроцессор, не компилятор. Если бы в коде было
Код:
#define LOG_PIDS expression
, то должен был бы. Но у Вас же опеределена не макрос-переменная, а макрос-функция - а одно с другим препроцессор не путает. Для вызова макроса-функции нужно написать её имя, затем список аргументов в круглых скобках.
Abstraction вне форума Ответить с цитированием
Старый 26.05.2013, 01:28   #5
heret1c
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 11
По умолчанию

Или я чего-то недопонимаю, но ведь там так и есть LOG_PIDS(x) - а дальше пошло выражение.
heret1c вне форума Ответить с цитированием
Старый 26.05.2013, 11:14   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Или я чего-то недопонимаю, но ведь там так и есть LOG_PIDS(x) - а дальше пошло выражение.
У Вас:
Код:
#define LOG_PIDS(x) expression
//...
 LOG_PIDS[number];
Или как-то так. Такое впечатление, что Вы перепутали круглые и квадратные скобки.
Abstraction вне форума Ответить с цитированием
Старый 26.05.2013, 20:22   #7
heret1c
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 11
По умолчанию

Блин спасибо за помощь, а то я уже реально запарился.
heret1c вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как исправить ошибку при Application.CreateForm Malysh Общие вопросы Delphi 1 17.06.2012 13:06
Как исправить ошибку java.lang.NullPointerException при тестировании методов ? NickolayNest Помощь студентам 3 03.02.2012 10:14
c++ ..при компиляции даёт ошибку.. silveran Помощь студентам 6 17.05.2011 15:32
Ошибка при компиляции <mqueue.h> gcc CodeStudent Qt и кроссплатформенное программирование С/С++ 3 23.06.2010 16:53
При переключении между чекбоксами - ошибка Stack overflow. Как исправить эту ошибку? SkAndrew Общие вопросы Delphi 5 26.08.2008 21:32