我必须使用 Clang 在 Mac 上编译一个 API,该 API 使用类似于此的构造:
#define TRUE 1
void func(int a) {
// ...
}
void func(double a) {
// ...
}
void func(float a) {
// ...
}
func(TRUE);
Clang 抱怨说对的调用func()
是模棱两可的,而 MSVC 和 GCC 没有。在这种情况下,Clang 是否可以选择整数变体?
编辑:这是编译的原始输出
../../resource/_api/c4d_basedocument.cpp:263:52: error: conversion from 'int' to 'const GeData' is ambiguous
this->SetParameter(DescLevel(DOCUMENT_USERCHANGE),TRUE,DESCFLAGS_SET_DONTCHECKMINMAX);
^~~~
../../resource/_api/ge_sys_math.h:21:15: note: expanded from macro 'TRUE'
#define TRUE 1
^
../../resource/_api/c4d_gedata.h:97:3: note: candidate constructor
GeData(double n)
^
../../resource/_api/c4d_gedata.h:110:3: note: candidate constructor
GeData(LONG n)
^
../../resource/_api/c4d_gedata.h:116:3: note: candidate constructor
GeData(SReal n)
^
LONG
是整数类型,SReal
浮点类型。