我想在同一個C文件中的函數的幫助下定義一個常量。在C中定義函數常量
我要定義一個常量:
#define a 2
#define b 5
#define power PowerOf(a,b)
時PowerOf是一個功能我在代碼實現後來,與簽名:
int PowerOf(int base,int exp)
我也宣佈它在開始時的守則。
我可以這樣做嗎?因爲當我嘗試中,編譯器給我一個錯誤如下:
[錯誤]可變大小的對象可能不被初始化
感謝
我想在同一個C文件中的函數的幫助下定義一個常量。在C中定義函數常量
我要定義一個常量:
#define a 2
#define b 5
#define power PowerOf(a,b)
時PowerOf是一個功能我在代碼實現後來,與簽名:
int PowerOf(int base,int exp)
我也宣佈它在開始時的守則。
我可以這樣做嗎?因爲當我嘗試中,編譯器給我一個錯誤如下:
[錯誤]可變大小的對象可能不被初始化
感謝
否。因爲macros在編譯階段之前由預處理器擴展。它們必須是編譯時間常量。但是,您可以同時使用a
和b
const int
,那麼它們將是整數常量。
#define
只是一個宏替代 - 不是一個真正的常數。
通過某種方式,您嘗試這樣做,您的#define power ...
不能是一個常量 - 它仍將在運行時調用,而不是編譯時。
同意其他答案,這是一個奇怪的/不恰當的/容易出錯的方式來使用定義。這是一個工作程序,它可以完成你在原始問題中提出的問題
#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));
}
我明白了...... 不幸的是,我的assigment有一個已經用H文件中的#define定義的const之一,我不允許改變它。不管怎麼說,還是要謝謝你! – Mike