2013-12-20 2 views
-2

Я знаю, что это Noobie вопрос, но как бы я это сделать? ...Как запустить функции/классы из основного?

#include "stdafx.h" 
#include<iostream> 


int main() 
{ 
    TypeText(); 
} 

int TypeText() 
{ 
    printf("Text"); 
} 
+0

Вперед объявить TypeText() над основной. – drescherjm

+0

ТипText() должен иметь декларацию перед main(). Нет причин, чтобы TypeText() возвращал int. –

+3

Я помню, что это на странице 1 любого учебника C стоит ничего ... – vanza

ответ

3

Когда компилятор видит вызов 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.

+0

Aha thanks Я пытался выяснить, почему id не работает, я не хочу запускать пламенную войну, но я только что пришел из Java, который этого не делал :) – user3033697

+0

Java работает по-разному с C++. –

0

Вы можете переупорядочить функции и определить main последние (после определения функции TypeText() ...).

Или вы могли бы объявить функцию TypeText() вставив

int TypeText(void); 

перед вашим main (или внутри вашего собственного заголовочного файла).

КСТАТИ return заявление отсутствует внутри TypeText тела (или вы должны объявить его как возвращение void)

Не забудьте включить все предупреждения и отладочной информации при компиляции файла. С GCC это означает компиляцию с g++ -Wall -g. И при необходимости используйте ваш отладчик (gdb ...).

0

Похоже, что для компилятора 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"); 
} 
+0

Не «предварительно объявлено» - просто объявлено. –

0

Включите следующий код в верхней части вашей программы:

void TypeText(); 

компилятор читает вниз и не знает, что ваша речь. Если вы включите код выше компилятора, когда он увидит, что вызванная функция будет искать то, что он должен делать.

Смежные вопросы