如何从c ++

时间:2015-10-01 14:38:05

标签: c++

我是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

如果我在不调用第二个函数的情况下运行代码,它就可以用于求和。

3 个答案:

答案 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上,您希望在一个问题中坚持一个问题。 :)

(请参阅我对您的问题的评论,了解有关在这里生存和繁荣的一些额外提示。)