这个循环意味着什么:for(j,0,np)

时间:2017-08-18 10:15:33

标签: c++ loops for-loop

inline string search_prod(string p) //returns a concatenated string of variables which can produce string p
    {
        int j,k;
        string r="";
        for(j,0,np)
        {
            k=1;
            while(gram[j][k] != "")
            {
                if(gram[j][k] == p)
                {
                    r=concat(r,gram[j][0]);
                }
                k++;
            }
        }   
        return r;
    }

我以前从未见过这个循环。

1 个答案:

答案 0 :(得分:1)

好。感谢@AshishJohn,这个问题现在可以解决了。

在提供的link中,您可以在开头看到一个更改for循环语法的定义:

#define for(i,a,b) for(i=a;i<b; i++)

因此for(j,0,np)将由预处理器转换为:

for (j=0; j<np; j++)

这是循环的正常。 np也在文件中声明,只是一个全局整数变量。

但是,正如@molbdnilo正确指出标准(N4296)禁止声明覆盖现有关键字的宏:

  

17.6.4.3.1宏名称

     
      
  1. 包含标准库标题的翻译单元不得在任何标准库标题中声明#define或#undef名称。

  2.   
  3. 翻译单位不得#define或#undef名称与关键词在词汇上相同,与表2中列出的标识符或7.6中描述的属性标记

  4.   

因此,它可能会或可能不会像我描述的那样。