Я знаю, что это Noobie вопрос, но как бы я это сделать? ...Как запустить функции/классы из основного?
#include "stdafx.h"
#include<iostream>
int main()
{
TypeText();
}
int TypeText()
{
printf("Text");
}
Я знаю, что это Noobie вопрос, но как бы я это сделать? ...Как запустить функции/классы из основного?
#include "stdafx.h"
#include<iostream>
int main()
{
TypeText();
}
int TypeText()
{
printf("Text");
}
Когда компилятор видит вызов TypeText
, он еще не знает, что TypeText
существует и что его подпись. Вы должны объявить функцию выше main
:
void TypeText();
int main()
{
TypeText();
}
void TypeText()
{
printf("Text");
}
В качестве альтернативы, вы можете просто переместить определение выше main
:
void TypeText()
{
printf("Text");
}
int main()
{
TypeText();
}
Обратите внимание, что TypeText
ничего не возвращает, поэтому должен иметь тип возвращаемого void
. Вы можете сказать то же самое для main
, но main
на самом деле return 0;
, если вы явно не укажете оператор return.
Aha thanks Я пытался выяснить, почему id не работает, я не хочу запускать пламенную войну, но я только что пришел из Java, который этого не делал :) – user3033697
Java работает по-разному с C++. –
Вы можете переупорядочить функции и определить main
последние (после определения функции TypeText()
...).
Или вы могли бы объявить функцию TypeText()
вставив
int TypeText(void);
перед вашим main
(или внутри вашего собственного заголовочного файла).
КСТАТИ return
заявление отсутствует внутри TypeText
тела (или вы должны объявить его как возвращение void
)
Не забудьте включить все предупреждения и отладочной информации при компиляции файла. С GCC это означает компиляцию с g++ -Wall -g
. И при необходимости используйте ваш отладчик (gdb
...).
Похоже, что для компилятора C++ требуется предварительная декларация. Вы можете google тему, и похоже, что кто-то сделал пример here. Этот конкретный тип декларации известен как function prototype.
#include "stdafx.h"
#include<iostream>
int TypeText(); //this method is now predeclared to be recognized in main()
int main()
{
TypeText();
}
int TypeText()
{
printf("Text");
}
Не «предварительно объявлено» - просто объявлено. –
Включите следующий код в верхней части вашей программы:
void TypeText();
компилятор читает вниз и не знает, что ваша речь. Если вы включите код выше компилятора, когда он увидит, что вызванная функция будет искать то, что он должен делать.
Вперед объявить TypeText() над основной. – drescherjm
ТипText() должен иметь декларацию перед main(). Нет причин, чтобы TypeText() возвращал int. –
Я помню, что это на странице 1 любого учебника C стоит ничего ... – vanza