(宏错误)错误:‘argv’未声明(在此函数中首次使用)

问题描述 投票:0回答:1

我一直在尝试编写这个模拟流行机的程序,并且我不应该使用任何硬编码变量或全局变量。 这只给我留下了宏,但由于某种原因,宏不会接受我的命令行参数。

它应该接受一个 int 类型的命令行参数,然后定义一个宏以供以后用作该值。 我也尝试过将参数转换为 int ,并使用 *argv[1] 因为它是一个指针,但没有运气。

我的代码如下:

int main (int argc, char *argv[]) {
#define PRICE *argv[1]
if (argc == 1){
        printf("Please specify the selling price as a command line argument.\n">
        printf("Usage: ./pop [price]");
        exit(1);
}
//#define PRICE (int)argv[1] //Was 40 previously.
if (*argv[1] % MULTIPLE != 0){//Protective if-else case
        printf("Price must be a multiple of %d.\n",MULTIPLE);
        exit(1);//Use exit to terminate since input is invalid.
}
printf("Welcome to my C pop Machine!\n");

尝试过强制转换,尝试取消引用指针,然后直接使用它。

c pointers command-line macros command-line-arguments
1个回答
1
投票

它应该接受一个 int 类型的命令行参数。

命令行参数的类型为

char *
。要将其转换为
int
,请使用
atoi()
/
strtol()
等。

参见:如何在 C 中将字符串转换为整数?

© www.soinside.com 2019 - 2024. All rights reserved.