使用 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
相同
我在使用 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