У меня есть два файла .cpp, один из которых называется practice.cpp, а другой - adder.cpp. они находятся внутри папки «Исходные файлы».Как вы используете функцию внутри другой функции?
код кулачки показан ниже:
// adder.cpp
#include "stdafx.h" //include library
int addition(int a, int b) //start function
{
int r = 0; //declare variables
r = a + b; //actual code
return r; //output of function
}
Второй код:
// Practice.cpp
#include "stdafx.h"
#include "adder.cpp"
#include <iostream>
using namespace std;
int main(void)
{
int number1 = 0;
int number2 = 0;
int number3 = 0;
do
{
printf("\n\nInsert value for first number\n\n");
scanf("%d",&number1);
printf("\nthe value ");
printf("%d ",number1);
printf("has been stored in memory location ");
printf("%d",&number1);
printf("\n\nInsert value for second number\n\n");
scanf("%d",&number2);
printf("\nthe value ");
printf("%d ",number2);
printf("has been stored in memory location ");
printf("%d",&number2);
number3 = addition(number1,number2);
printf("%d",number3);
}
while (1==1);
return 0;
}
Но код не скомпилируется. Я получаю сообщение об ошибке:
1>------ Build started: Project: Practice, Configuration: Debug Win32 ------
1> Practice.cpp
1>c:\users\craig\documents\3rd year work\progamable systems\practice\practice\practice.cpp(25): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : see declaration of 'scanf'
1>c:\users\craig\documents\3rd year work\progamable systems\practice\practice\practice.cpp(33): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : see declaration of 'scanf'
1>Practice.obj : error LNK2005: "int __cdecl addition(int,int)" ([email protected]@[email protected]) already defined in adder.obj
1>C:\Users\Craig\Documents\3rd year work\Progamable Systems\Practice\Debug\Practice.exe : fatal error LNK1169: one or more multiply defined symbols found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Я смотрел по всему Интернету, но похоже, что я делаю это правильно. Что я могу сделать, чтобы исправить это? Благодаря!
Не включайте CPP файлы. – chris
«уже определен в adder.obj» сообщает вам, что вы дважды определили функцию, что нарушает ODR. –
@ user34248 не могли бы вы отметить любой ответ в качестве правильного ответа? :) –