用C中的函数定义常量

时间:2013-12-11 08:18:48

标签: c constants

我试图在同一个C文件中使用函数来定义一个常量。

我想定义一个常量:

#define a 2
#define b 5
#define power PowerOf(a,b)

当PowerOf是我实现的函数时稍后在代码中使用签名:

int PowerOf(int base,int exp)

我也在守则的开头宣布。

我能这样做吗?因为当我尝试时,编译器给出了如下错误:

  

[错误]可能无法初始化可变大小的对象

由于

4 个答案:

答案 0 :(得分:3)

这非常危险且容易出错:

#define a 2
#define b 5

每当您要包含此文件时,所有ab变量都将替换为这些值!

答案 1 :(得分:3)

没有。因为macros在编译阶段之前由预处理器扩展。它们必须是编译时常量。但是,您可以同时生成ab const int,然后它们将是整数常量。

答案 2 :(得分:2)

#define只是一个宏替换 - 而不是一个真正的常量。

在某种程度上,你试图这样做,你的#define power ...不能是一个常量 - 它仍将在运行时调用,而不是在编译时调用。

答案 3 :(得分:0)

同意其他答案,这是使用定义的奇怪/不适当/容易出错的方式。这是一个工作程序,可以完成您在原始问题中提出的问题

#include <math.h>
#include <stdio.h>

#define A 7
#define B 2


int powerOf(double x, double y);

#define SUPERPOWER powerOf(A,B)


int main() {
   printf("%d", SUPERPOWER);
   return 0;
}

int powerOf(double x, double y) {
    return (int)trunc(pow(x,y));
}