使用 gcc 时三元运算符编译错误,但使用 g++ 没有问题

ternary operator compile error when using gcc but no issue using g++

我在使用 gcc 编译此代码时遇到了编译问题:

#include <stdio.h>
#include <stdlib.h> /*srand, rand*/
#include <time.h> /*time*/
#include <math.h> /*sqrt*/

int abs(int x) {
 return( (x>0) ? x : int(-x));
};
int max(int x, int y) {
 return( (x>y) ? x : y);
};
int min(int x, int y) {
 return( (x>y) ? y : x);
};

使用此编译指令:gcc sqrtsumofsquares.c -o test

我得到的结果错误是:

sqrtsumofsquares.c: In function 'abs':
sqrtsumofsquares.c:7:22: error: expected expression before 'int'

但是当我用 g++ sqrtsumofsquares.c -o test

编译相同的代码时

代码编译没有问题。

代码本身和三元运算符的使用在语法上似乎是正确的

我可以做哪些修改来在 gcc 上编译此代码?因为我必须使用 gcc 而不是 g++

int(-x) 在 C++ 中是有效语法,但在 C 中不是有效语法。我想你只是想写 -x.

gcc编译C代码,g++编译C++代码。

在 C++ 中 int(something) 将值转换为 int,与 (int)something

相同