#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
В программе 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(), ваша программа будет компилироваться с:(примечание: добавление
'\n'в конце"this is\n", чтобы вывод вашей программы заканчивался новой строкой, как указано в POSIX)Пример использования/вывода
Я только что назвал исполняемый файл программы
dummyfunction, но вы можете назвать его как угодно.Разве
main()не должен возвращать значение, чтобы избежать ужасного проклятия неопределенного поведения? — person Nguyên Khôi; 29.06.2021main()возвращает0по умолчанию, если не указано иное (по крайней мере, начиная со стандарта C99). Он работает так же для C++. Это хороший момент, и вы можете легко добавитьreturn 0;в конце, чтобы сделать поведение по умолчанию явным. Обоснование возврата 0 в качестве значения по умолчанию в C/C++ — person Nguyên Khôi; 29.06.2021