【发布时间】:2016-06-04 09:34:02
【问题描述】:
在 printNumbers.h 文件中
//Write a function getNumber() and put your favourite number inside!
//I will then compile the program and print everyone's favourite number!
int getNumber(void);
如果我想继续打印出三个人最喜欢的数字
int main() {
int counter = 0;
while(counter < 9999) {
if(counter % 3 == 0) {
//Print out the first person's number
printf("My number is %d\n", getNumber();
} else if (counter % 3 == 1) {
//Print out the second person's number
printf("My number is %d\n", getNumber();
} else {
//Print out the third person's number
printf("My number is %d\n", getNumber();
}
//Keep printing everyone's numbers until counter reaches 9999
counter++;
}
return 0;
}
3 个人给了我他们编写的 C++ 文件,我将每个文件重命名为 A.cpp B.cpp C.cpp。它可能是随机顺序的,所以他们不知道他们的文件最终是 A B 还是 C
他们可以编写的 c++ 文件示例
int getNumber() {
//Each person can write their own function to return whatever number they want
int myNumber = 1;
return myNumber;
}
无论如何,我要编译程序并使用 A.cpp 中的 getNumber() 进行第一次调用,使用 B.cpp 进行第二次调用,使用 C.cpp 进行第三次调用,然后重复.
我可以在 while 循环中命名函数名称 getNumber1() getNumber2() getNumber3() 并更改三个 C++ 文件中的函数名称,但是当有人编写 getNumber() 函数时,他们不知道它是否会结束最多是 A B 或 C。每个人的 getNumber() 函数都应该称为 getNumber()。
.
编辑:很多人都在建议命名空间。我无法控制 .h 文件和人们获得的 ADT,因此他们编写的程序不会使用命名空间。还有很多人可能会向我提交 C++ 文件,我必须将它们随机分组为 3 个组(因为我的程序只能打印 3 个人的数字),所以他们不知道要使用什么命名空间。 .
编辑: 一些人建议修改 .h 文件或人们编写的程序。我们都得到了 .h 文件,我们无法更改它。我们将文件(如示例)提交给学校,他们能够完成我的主要功能(我不知道他们是如何做到的)。我的 main 函数将允许用户在提交之前更好地测试他们的 getNumber() 函数,因此它是一个独立于学校的程序,用户可以选择使用。
如果任何事情看起来令人困惑或不清楚,请向我提问以澄清我的问题!
谢谢。
【问题讨论】:
-
这种东西不是命名空间的用途吗?
-
不,没有。您不能链接到他们所有的翻译单元并且对同一函数有多个定义。
-
使用
-DgetNumber=getNumberXXX编译,每个文件使用不同的 XXX... -
与其重复编辑问题以揭示更多约束,不如逐字包含整个作业。
-
@MarkPlotnick 嘿,马克,没有分配。这只是一个附带项目。主要任务是写一个 getNumber() 函数,然后学校会一起编译 3 个人的 getNumber() 函数并重复打印他们的数字。我正在做的是另一个类似的程序,学校将如何打印 3 个人的数字,但包括更多的东西来帮助人们测试他们的功能