我正在尝试编写一个函数来计算C ++中数字的数字根,但在编译后会出错

时间:2017-01-28 17:32:45

标签: c++

var Company = mongoose.model('Company');
    Company.find({companyName: req.query.companyName, position: req.query.position,
                  areaOfExpertise: req.query.areaOfExpertise, zip: req.query.zip,
                  country: req.query.country}, function(err, docs) {
                    res.json(docs);
                  });

这是我编写的代码,第一个函数计算数字的总和。第二个函数使用循环重复计算数字之和,直到获得一位数字(即数字根)。

但是当我编译代码时,这就是我得到的

  

5:29:错误:在'{'标记(主要的第一行)之前不允许使用函数定义

     

22:2:错误:在输入结束时预期'}'(最后一行)

预先感谢一些指导意见。

2 个答案:

答案 0 :(得分:2)

正如人们在评论中指出的那样,你不应该在另一个函数中定义一个函数。

int main(){
   // This is defined inside of main
   int sum_digits(int tiv) {
      int sum = 0;
      while (tiv > 0) {

我总是鼓励正确的代码缩进,因为这会使这个问题更加明显。

此外,这不是执行函数调用的正确方法:

int root = sum_digit(int num);

您不需要在此处再次包含int(事实上,这样做在语法上无效) - 从代码的其余部分已经清楚num是{{} 1}}。

同样的事情:

int

另外,你实际上并没有对while(root > 9) { sum_digits(int root); }; 的返回值做任何事情,所以这实际上什么都不做。它将是一个无限循环(如果sum_digits大于9),因为root的值永远不会改变,或者循环不会运行(如果root小于9)。

最后一点:为了让这个程序实际执行任何操作,您必须使用root方法调用某些值的函数。现在,即使你修复了编译错误,程序也无法正常工作,因为你实际上并没有确定你想要root的值,而你实际上并没有真正调用你编写的函数。

答案 1 :(得分:0)

在函数中定义函数不是你应该在c / c ++中做的。我认为gcc支持这一点,但是它不符合标准。

只是在其他功能中声明和定义您的功能。如果要将其隐藏在公共API

中,请使用匿名命名空间