我试图定义"N"是字符的数目在我的课,通过把的#define N 10在我的.h文件的开头,当我这样做,我得到了很多错误,其中包括缺少的(,丢失)失踪]等
这是我的代码:
#define N 10;
class String
{
private:
char str[N];
public:
String();
String(char[]);
~String();
};
Run Code Online (Sandbox Code Playgroud)
当我改变它
char str[10];
Run Code Online (Sandbox Code Playgroud)
它确实有效,是不是应该是一样的?
谢谢.
#define N 10;
// ^
Run Code Online (Sandbox Code Playgroud)
因此char str[N];变得
char str[10;];
// ^
Run Code Online (Sandbox Code Playgroud)
请记住,预处理器只是替换为宏指定的内容.你指定了10;它插入10;的N.
一个更好的解决方案,而不是删除那个讨厌的;是做这样的事情1
class String
{
private:
static const int numChars = 10;
char str[numChars];
public:
String();
String(char[]);
~String();
};
Run Code Online (Sandbox Code Playgroud)
很有可能你不需要N在代码的其他部分使用String,所以为什么不在内部定义更好的东西String呢?"一些更好的东西",因为一般认为宏是邪恶的,因此不使用宏会使你,好吧,不是邪恶(或者至少是较小的邪恶).
1 您应该注意:在类定义中定义静态const整数成员