c - 在 C 中的函数中使用#define 数字

标签 c function c-preprocessor

为什么这段代码不起作用? (这不是实际代码,而是简化版)

#include <stdio.h>
#define NUMBER 5
int function( int NUMBER );

int main (void)
{
    function( NUMBER );
    return 0;

}
int function( int NUMBER )
{
    printf("Hi %d\n", NUMBER);
    return 0;
}

最佳答案

#define NUMBER 5
int function( int NUMBER );

#define 是预处理器宏,简单的文本替换。那么,让我们看看您真正要编译的是什么:

int function( int 5 );

这毫无意义。这部分很好:

int main (void)
{
    function( NUMBER );
    return 0;    
}

因为您正在调用 function 的值为5,但是function 的签名应该如下所示:

int function( int x );  // the argument is a variable, x

关于c - 在 C 中的函数中使用#define 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13127051/

相关文章:

c++ - #包括任何地方

c - 在两个 channel 上播放单声道 WAV

c - C 中 mkfifo() 产生的段错误

php - 口音/PHP/Javascript/未捕获的语法错误意外标识符

php - 为什么类名不回退到命名空间中的全局类名?

c++ - 如何编写跳过 C++ 代码行的预处理器定义?

我可以在编译 C 代码期间看到定义的宏吗?

c - 使用 C popen() : read() work, 但 fread() 没有

c - vim clang_complete debian 不工作 - 如何正确安装它?

c - 警告 : control reaches end of non-void function [-Wreturn-type]