为什么/*注释*/在C代码中随机插入只能在某些地方使用,而不是在任何地方?

Tho*_*hom 2 c comments

编译器之间是否包含/**/忽略了所有内容?是不是它应该在C程序中无处不在,被忽略就好像它不存在?为什么然后在我的程序中它在最不可能的地方工作,但是在其他地方失败了?评论的规则是什么?在我的下一个程序中观察评论的原因是什么?

#include<stdio.h>
#include<string.h>


int main(void)
{
char str1/*works*/[90];  //comment works
FILE *fp=fopen("D:\\source.txt","r");
if(fp==NULL){p/*Fails*/rintf("ERROR");return 0;}  //comment fails
while(fgets(str1,8/*Fails*/9,fp)!=NULL)  //comment fails
{
    if(strstr(str1,"999.999")==/*Works*/NULL)  //comment works
    printf("%s",str1);
}
fclose/*Works*/(fp);  //comment works

}
Run Code Online (Sandbox Code Playgroud)

nvo*_*igt 15

它只适用于您可以插入空格(空格,制表符,换行符)的地方.


Bar*_*mar 6

解析器被解析器视为空格.所以当你把它放在8和之间时9,你不再有一个数字,你有两个用空格分隔的数字.