gpt4 book ai didi

c++ - Clang 模糊调用(int、float、double)

转载 作者:太空宇宙 更新时间:2023-11-04 14:04:30 25 4
gpt4 key购买 nike

我必须在 Mac 上使用 Clang 编译一个 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是浮点型。

最佳答案

我有更多时间调查原始构建项目,发现我缺少一个编译器选项。有趣的是,它只会产生额外的定义集,这似乎解决了“歧义”。

-include _api/ge_mac_flags.h

看起来像

#ifndef __GE_MAC_FLAGS__
#define __GE_MAC_FLAGS__

#define __MAC
#define __DEBUGGING__ // avoid conflicts with DebugAssert() definition for the Mac

#if __LP64__
#define __C4D_64BIT
#endif

#endif

解决了!

关于c++ - Clang 模糊调用(int、float、double),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com