2015-08-15 2 views
-4

Я пытаюсь скомпилировать этот код, но я gettong ошибку:Не удается скомпилировать простейший C++ код

#include <iostream> 

main(){ 

    std::cout << add(5, 6); 
} 

int add(int a, int b){ 
    return a+b; 
} 

И я получаю следующее сообщение об ошибке:

error: 'add' was not declared in this scope 
    std::cout << add(5, 6); 
+1

Должен иметь переднюю декларацию – bpgeck

+0

, поскольку я прокомментировал сообщение ниже, ничего себе, поэтому функции не видят других функций ниже них? что-то вроде этого, потому что они их не фиксируют. Java-разработчик. – instructionSetQuestion

+0

В C++ очень распространено иметь заголовочный файл, который имеет все функции declerations, а затем просто определить эти функции в вашем .cpp-файле – bpgeck

ответ

5

Перед основной() Место:

int add(int a, int b); 

Обычно функциональный интерфейс помещается в файл заголовка и затем включается.

+0

wow, поэтому функции не видят других функций под ними? что-то вроде этого, потому что они их не фиксируют. Java-разработчик. – instructionSetQuestion

+1

@ instructionSetQuestion: На самом деле это не «сосать». Для этого есть сложные причины, и это работает отлично. –

+2

@instructionSetQuestion Все функции Java находятся в классе. Если бы вы определили эти функции как функции-члены, вы обнаружите, что C++ видит функции «ниже их». У вас есть глобальные, неклассические функции, чего не существует в Java AFAIK. Для этого вы должны объявить прототип функции (или весь элемент функции должен появиться) перед вызовом функции. Если вы хотите, чтобы это было «исправлено», изучите программирование C, где вы можете вызывать функции, не объявляя их (и терять проверку прототипа). – PaulMcKenzie

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