我遇到了一个我不理解的错误,主要是因为if引用了代码的注释部分
基本上我有类似的东西:
#ifndef nH
#define nH 2 // number of hermitian matrices
#endif
然后我有一个#if指令
#if (nH != 0)
gsl_matrix_complex* H[nH]; // hermitian operators
gsl_vector* evalH[nH]; // eigenvalues of H
#endif
如果我尝试编译,我会收到以下错误:
error: operator '/' has no right operand
#define nH 2 // number of hermitian matrices
我通过简单地将评论放在#define上面来解决这个问题:
// number of hermitian matrices
#ifndef nH
#define nH 2
#endif
此外,如果我取消#if指令,则不会发生错误。 不过,我不明白这个问题,我想知道到底出了什么问题
谢谢
编辑: 所以,现在我试图复制它,它完美地编译。我不知道,我所能做的就是发布我得到的错误的屏幕截图。如你所见,两者之间没有空间/
答案 0 :(得分:1)
确保使用至少为C99的语言进行预处理。
如果您预处理:
#ifndef nH
#define nH 2 // number of hermitian matrices
#endif
#if (nH != 0)
#endif
带
gcc-4.8 -std=c89 -E pp.c
你会得到pp.c:2:20: error: operator '/' has no right operand
但如果您将语言设置为c99或更高版本(gnu*
以“{1}}开头的变体”,则不应出现此错误消息
答案 1 :(得分:0)
请确认//用于添加评论之间没有空格, 只有在两者之间有任何空间时才会出现错误。在这种情况下,它将被视为Division表达式,因为您没有在第一个斜杠(/)的右侧写任何数字,这就是编译器为您提供的原因这个错误。