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;
}
我以前从未见过这个循环。
答案 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宏名称
包含标准库标题的翻译单元不得在任何标准库标题中声明#define或#undef名称。
- 醇>
翻译单位不得#define或#undef名称与关键词在词汇上相同,与表2中列出的标识符或7.6中描述的属性标记
因此,它可能会或可能不会像我描述的那样。