компиляция

Тема в разделе "LANGS.C", создана пользователем ckunep, 1 июл 2009.

  1. ckunep

    ckunep New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    19
    я не могу откомпилировать код может кто подскажет что не так, испл borland compiler 5.5

    код test.h
    Код (Text):
    1. #ifndef TEST_H
    2. #define TEST_H
    3.  
    4. float gdtDegToRad(float deg);
    5.  
    6. #endif
    код test.cpp
    Код (Text):
    1. #include "test.h"
    2.  
    3. float gdtDegToRad(float deg)
    4. {
    5.   return deg * M_PI / 180.0f;
    6. }
    код my.cpp
    Код (Text):
    1. #include "test.h"
    2.  
    3. int main()
    4. {
    5.   gdtDegToRad(90);
    6.   return 0;
    7. }
    компилирую файл my.cpp, компилятор выдает ошибку: unresolved external gdtDegToRad(float) referenced from <путь>
     
  2. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Это в смысле bcc my.cpp? Закономерно. Попробуй bcc my.cpp test.cpp
     
  3. ckunep

    ckunep New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    19
    да точно работает, но это так неудобно, можно как нибудь через указание одного файла все откомпилировать?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    ckunep
    Зачем? ^). Батники на что?
     
  5. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    ckunep
    ИМХО, лучше через makefile'ы. Но можно и батником.
    Что значит через указание одного файла, если в исходниках два?? Это, можно сказать, основы С.
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Конечно makefile-ы лучше. ^)
     
  7. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    ckunep
    За bcc ручусь, но компиляторы, как правило, умеют читать параметры из файла:

    <compiler>.exe @<response filename>
     
  8. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Т.е. не ручусь.
    Редактирование... :-(
     
  9. ckunep

    ckunep New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    19
    А можно ли в объявлении класса задавать встроенные ф-ии как-нибудь таким образом:
    Код (Text):
    1. class A
    2. {
    3.   public:
    4.     inline myFunc();
    5. };
    6. A::myFunc()
    7. {
    8.   ...
    9. }
     
  10. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    ckunep
    Можно, только наоборот:
    Код (Text):
    1. class A
    2. {
    3. public:
    4.     void myFunc();
    5. };
    6.  
    7. inline void A::myFunc()
    8. {
    9.     //...
    10. }
     
  11. ckunep

    ckunep New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    19
    у меня опять проблема. я объявляю прототипы встроенных ф-ий в заголовочной файле my.h
    Код (Text):
    1. inline int func(int x);
    реализацию в cpp файле
    Код (Text):
    1. int func(int x)
    2. {
    3.   ...
    4. }
    и когда я подключаю этот заголовочный файл в каком нибудь файле проекта, то компилятор выводит сообщение об ошибке undefined symbol func(int). А если я делаю ф-ию не встроенной, то все компилируется. Что не так?
     
  12. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    inline надо писать в реализации, и inline функция будет видна только в пределах одного файла.
    поэтому всю реализацию inline функции надо вынести в *.h файл.