加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在数字const之前预期’,’或’…’

发布时间:2020-12-16 10:29:52 所属栏目:百科 来源:网络整理
导读:我是C编程的新手,并试图找出遇到的一些问题. 我写的时候 #define N 5void Sort(int *const array,int N); 编译器在数字const之前给了我“预期’,’或’…’的消息”.在互联网上搜索后发现问题可能被#define调试为数值.我没有使用#define作为常量N来完成编译
我是C编程的新手,并试图找出遇到的一些问题.
我写的时候

#define N 5

void Sort(int *const array,int N);

编译器在数字const之前给了我“预期’,’或’…’的消息”.在互联网上搜索后发现问题可能被#define调试为数值.我没有使用#define作为常量N来完成编译器.但是,我想知道我应该如何修改上面两行以便我不会收到该错误消息?

解决方法

你正在使用预编译器,它在编译器看到它之前在程序的原始文本上运行.因此,在这种情况下,所有出现的N(当N本身不是另一个单词的一部分)被替换为5.当程序到达编译器时,由于预处理器,它所看到的只是:

void Sort(int *const array,int 5);

这是无效的语法,这就是你得到错误的原因.

C或C.

为#define使用不同的名称,或将参数名称更改为任何其他有效标识符.后者看起来像这样:

#define N 5

void Sort(int *const array,int number);

另一个选择是不在函数原型中使用变量名:

#define N 5

void Sort(int *const,int);

但是你仍然有在实际函数定义中命名它的问题.

请注意,即使只是更改字母的大小写(从N到n)也会修复它,但不要这样做,因为它可能看起来对某人不明确.

C

如果您使用的是C,则不应使用#define(尽可能避免使用它,因为它们是bad in myriad ways).你应该更喜欢const int:

const int N = 5;

您可以在任何可以使用另一个的地方使用它,而且当人们尝试为自己使用该名称时它不会破坏,并且它不会导致像C中那样的多个定义(感谢Jens).例如,如果您使用常量而不是#define,原始代码将起作用:

const int N = 5;

void Sort(int *const array,int N); // works because N is a real variable

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读