我是C ++的新手 我之前使用的是java,我试图用听众文件调用c ++函数。
这是我的代码:
sum.h
int sum(int a, int b);
cur_time.h
#ifndef CUR_TIME_H
#define CUR_TIME_H
clock_t clock(void);
#endif /* CUR_TIME_H */
的main.cpp
#include <iostream>
#include "sum.h"
#include "cur_time.h"
int main ()
{
int x;
int y;
x = sum(3,4);
std::cout << x;
y = clock(void);
y = std::cout << y;
return 0;
}
所以在main.cpp中我试着用这个函数显示我的系统经过的时间:clock_t clock(void);
当我运行项目时,我有这个错误:
main.cpp:13:13: error: expected primary-expression before ‘void’
main.cpp:14:3: error: ‘__ostream_type’ was not declared in this scope
如果我在不调用第二个函数的情况下运行代码,它就可以用于求和。
答案 0 :(得分:2)
void
。std::cout << y
分配给y
在这里毫无意义,gcc给了我这个错误:
错误:从'std :: basic_ostream'到'int'的无效用户定义转换[-fpermissive]
因此,main.cpp应该是这样的:
#include <iostream>
#include "sum.h"
#include "cur_time.h"
int main ()
{
int x;
int y;
x = sum(3,4);
std::cout << x;
y = clock(); // remove void
std::cout << y; // remove y =
return 0;
}
答案 1 :(得分:0)
您是否在var bulk = db.items.initializeUnorderedBulkOp();
bulk.find({cell: socket.cell}).update({$addToSet: {sessions: id}});
?
sum(int, int)
功能?
简单地执行Sum.h
还不够好,您需要定义该功能。
int sum(int a, int b);
答案 2 :(得分:0)
让我们将第一条错误消息作为线索。当我编写C ++代码时,我会以各种形式遇到它。
main.cpp:13:13:错误:在'void'之前预期的primary-expression
短语“期望的初级表达”几乎总是意味着你有A)忘记了某些东西,或者B)键入了一些奇怪或意外的东西。
例如,如果您尝试cout << "Hello, " < "world!" << endl;
,则会出现同样的错误。在这种情况下,我会在<
放置<<
。 (两天前我的代码中的实际示例。)
在您的情况下,错误消息是关于void
的尖叫,这意味着void
或之前的任何内容都不合适。在您的第y = clock(void);
行中,我们知道前面的标记(
是正确的...我们毕竟正在调用一个函数。这必须意味着void
输入错误或不合适。显然它没有错误。如果删除它,您的代码就可以运行。
这是怎么回事?好吧,与某些语言不同,C ++可以接受一个空的arg列表,只要该函数不期望任何参数。 y = clock();
将正确调用该函数。
[ BONUS:如果您尝试在没有任何参数的情况下调用构造函数,请在调用中完全取消括号。这只是其中一个奇怪的例外。]
那么,第二个错误呢?通常,您应该尝试仅修复列表顶部的错误(除非您确定其他人的内容)。很多时候,一个错误也会导致其他错误发生。要查看我的意思,请尝试不使用分号并检查结果中出现的错误。修复该错误并重新编译。如果第二个错误再次出现,那么你就解决了。
关于你对MikeCAT的评论,这是一个单独的问题,但无论如何我都会解决它。您的clock()
函数会返回clock_t
,但您要将其分配给y
,其类型为int
。似乎clock_t
基于int
,因此您应该能够逃脱它。但是,将y
切换为类型clock_t
也是一个好主意,看看是否可以解决它。
除此之外,它可能与您使用时钟的方式有关,尽管我不是该课程的专家。如果您仍然遇到问题,请创建一个新问题。在StackOverflow上,您希望在一个问题中坚持一个问题。 :)
(请参阅我对您的问题的评论,了解有关在这里生存和繁荣的一些额外提示。)