есть ли проблема в моем коде и как ее исправить?

#include <iostream>
 void dummyfunction(void)
 {
     std::cout<< "this is";
 }

ошибка:

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

.Как я могу это исправить??

Ну не знаю, есть? То, что вы показываете, в порядке, хотя интервалы можно было бы улучшить. Вам нужно будет вызвать dummyfunction();, прежде чем он сделает что-либо из main() и т. д.. Добавьте в конце int main() { dummyfunction(); } (для справки, функция main() является точкой входа для запуска программы)   —  person Nguyên Khôi    schedule 29.06.2021

Название вашего вопроса не является конкретным.   —  person Nguyên Khôi    schedule 29.06.2021

См. также:  Почему мой контроллер MVC возвращает неформатированный и заключенный в кавычки JSON?
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Nguyên Khôi

    В программе C/C++ функция main() обеспечивает точку входа для запуска программы. (есть некоторые специализированные .ctor функции, вызываемые перед main(), с которыми вы редко, если вообще когда-либо, сталкиваетесь)

    Итак, то, что у вас есть выше, объявляет функцию dummyfunction();, но нет функции main(), которую компоновщик ld может использовать в качестве точки входа (адрес, по которому управление программой передается из оболочки в вашу программу для запуска)

    Ваши сообщения об ошибках совершенно ясно говорят о том, что проблема не в main(). Чтобы исправить ошибку, вам нужно определить функцию main(), где правильными вызовами являются либо int main (void), либо int main (int argc, char *argv[]) (вы увидите, что char *argv[] записывается как char **argv). Также есть переменная env, но здесь она не важна. Если ваша программа не принимает аргументов в командной строке, то int main (void) подходит. В C++ void можно опустить, так как это имеет значение только для C.

    Включая main(), ваша программа будет компилироваться с:

    #include <iostream>
    
    void dummyfunction(void)
    {
        std::cout << "this is\n";
    }
    
    int main ()
    {
        dummyfunction();
    }
    

    (примечание: добавление '\n' в конце "this is\n", чтобы вывод вашей программы заканчивался новой строкой, как указано в POSIX)

    Пример использования/вывода

    Я только что назвал исполняемый файл программы dummyfunction, но вы можете назвать его как угодно.

    $ ./dummyfunction
    this is
    

    Разве main() не должен возвращать значение, чтобы избежать ужасного проклятия неопределенного поведения? person Nguyên Khôi; 29.06.2021

    main() возвращает 0 по умолчанию, если не указано иное (по крайней мере, начиная со стандарта C99). Он работает так же для C++. Это хороший момент, и вы можете легко добавить return 0; в конце, чтобы сделать поведение по умолчанию явным. Обоснование возврата 0 в качестве значения по умолчанию в C/C++ person Nguyên Khôi; 29.06.2021

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: