我有一个自定义数据类型,实际上可以是float或double.在除OSX之外的每个操作系统上,我都能够成功构建此C++ 11模板:
#include <cmath>
#include <cstdlib>
#include <cstdint>
template< class REAL_T >
inline REAL_T inhouse_abs(REAL_T i_val)
{
return std::abs((REAL_T)i_val);
}
int main()
{
int32_t ui = 2;
inhouse_abs(ui);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,clang 6.0(3.5 LLVM)报告了一个模糊的函数调用.如果我abs改为fabs,则在OSX上解决了错误,但现在我的Linux clang,gcc和Visual Studio上出现了相同的错误.
使用fabs的Visual Studio出错:
349 error C2668: 'fabs' : ambiguous call to overloaded function
Run Code Online (Sandbox Code Playgroud)
UPDATE
这个例子在我们的OS X系统上编译,尽管在几乎相同的项目中它没有.解决方案<cstdlib>明确包含在源代码中,而不是包含在另一个头文件中.原因尚不清楚,但似乎是xcode/clang没有跟随我们的标题包括正确.
public void draw () {
Camera camera = viewport.getCamera();
camera.update();
if (!root.isVisible()) return;
Batch batch = this.batch;
if (batch != null) {
batch.setProjectionMatrix(camera.combined);
batch.begin();
root.draw(batch, 1);
batch.end();
}
if (debug) drawDebug();
}
Run Code Online (Sandbox Code Playgroud)
(GitHub上的链接.)
我感兴趣的是这一行: Batch batch = this.batch;
我的第一个猜测是一些缓存改进.我是对的,还是有其他理由避免直接使用实例变量?
我已将Android SIP演示加载到Android Studio中。我在getonsip.com上注册了一个帐户,将其添加到我的手机帐户中,并通过从getonsip.com网络应用程序以及从一部Android手机到另一部Android手机拨打电话来验证它是否可以正常使用。到目前为止一切都很好。
我稍微修改了演示中的Java代码以适应getonsip设置:
SipProfile.Builder builder = new SipProfile.Builder(username, domain);
builder.setOutboundProxy(proxy);
builder.setPassword(password);
builder.setAuthUserName(auth);
builder.setAutoRegistration(true);
builder.setPort(5060);
builder.setProtocol("UDP");
sipProfile = builder.build();
Run Code Online (Sandbox Code Playgroud)
然后,将其部署到我的手机(Galaxy S4,Android 4.4.2 API 19)。但是,当我尝试这样给自己打电话时:
sipCall = sipManager.makeAudioCall(sipProfile.getUriString(), sipAddress, listener, 30);
Run Code Online (Sandbox Code Playgroud)
我总是得到相同的错误:
05-14 11:43:13.476 5061-5080/android.SipDemo W/System.err? android.net.sip.SipException: Failed to create SipSession; network unavailable?
Run Code Online (Sandbox Code Playgroud)
StackOverflow和互联网上的其他帖子对我没有帮助。我尝试在呼叫,重新启动电话以及将目标SIP地址更改为包括sip:<address>@getonsip.com和之前添加5秒的延迟sip:<address>@getonsip.com:5060,但始终是相同的错误消息。
有人知道如何解决这个问题吗?
如果我尝试在Gradle项目中升级到最新的Kotlin版本,则在构建Android子项目时会遇到以下错误:
e: /(redacted)/AndroidLauncher.kt: (8, 15): Cannot access built-in declaration 'kotlin.Unit'. Ensure that you have a dependency on the Kotlin standard library
Run Code Online (Sandbox Code Playgroud)
降级至1.3.31就可以了。我还尝试了从3.4.0-> 3.4.1升级com.android.tools.build版本,但没有区别。
该错误非常清楚地表明,找不到Kotlin STL有麻烦。是否需要添加一些新的依赖项或需要应用的插件?
VS Code 似乎维护着它自己的文件工作更改记录。(请参阅图像中文件名旁边的“点”,它表示未保存的更改。)
我希望它完全忘记这些更改并从磁盘加载文件。
关闭并重新打开文件和/或整个项目不起作用。放弃更改的按钮在哪里或者命令是什么?