小编HHK*_*HHK的帖子

为什么静态内联数据成员不会出现在 Macos 上的 .bss 部分?

Macos上尝试snmalloc 我想知道为什么所有创建的二进制文件都是 >256MiB

事实证明,static inline在 Mac OS X 上,ARM64 和 x86_64 上的零初始化数据成员以一种奇怪的方式降低。即使这个简单的测试也会产生巨大的二进制文件:

容器.h

#pragma once
#include <cstdint>

class Container {
    public:
        inline static uint8_t inner[256000000];
};
Run Code Online (Sandbox Code Playgroud)

主文件

#include "container.h"

int main() {
    return Container::inner[0];
}
Run Code Online (Sandbox Code Playgroud)

编译成这样:

$ ~/clang+llvm-12.0.0-x86_64-apple-darwin/bin/clang -O3 -std=c++17 main.cc --target=x86_64-apple-darwin -c; ls -l main.o
-rw-r--r--  1 hans  staff  256000744 Jun 21 16:29 main.o
Run Code Online (Sandbox Code Playgroud)

开源 clang 和 Apple clang 一样。gcc 的行为类似。

在 Linux(用 clang 或 gcc 编译)上,它包含在 .bss 部分中,因此不占用任何空间。

为什么在 Macos 上会出现这种情况?这是错误还是预期行为?

c++ macos mach-o llvm clang

17
推荐指数
2
解决办法
398
查看次数

Android L将形状视为可绘制背景

我在Nexus 5上测试Android L预览.我的应用程序出了问题.

我有一些背景设置的TextViews:

android:background="@drawable/rounded_textview"
Run Code Online (Sandbox Code Playgroud)

而"rounded_textview"就是形状.它在<= API19下工作得很好.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="3dp">
<solid android:color="#999999"/>
<corners
 android:bottomRightRadius="2dp"
 android:bottomLeftRadius="2dp"
 android:topLeftRadius="2dp"
 android:topRightRadius="2dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

在Android L开发人员预览背景被忽略.我的所有TextView都是透明的.知道我做错了什么吗?

android android-drawable android-5.0-lollipop

12
推荐指数
1
解决办法
3197
查看次数

如何使用FileSystemWatcher查看目录并仍然允许正确删除它?

考虑以下代码:

string dir = Environment.CurrentDirectory + @"\a";
Directory.CreateDirectory(dir);
FileSystemWatcher watcher = new FileSystemWatcher(dir);
watcher.IncludeSubdirectories = false;
watcher.EnableRaisingEvents = true;
Console.WriteLine("Deleting " + dir);
Directory.Delete(dir, true);
if (Directory.Exists(dir))
{
    Console.WriteLine("Getting dirs of " + dir);
    Directory.GetDirectories(dir);
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

有趣的是,这会抛出一个UnauthorizedAccessException Directory.GetDirectories(dir).

删除监视的目录会返回而不会出现错误,但Directory.Exists()仍然返回true并且仍然列出该目录.此外,访问目录会为任何程序产生"拒绝访问".一旦带有FileSystemWatcher的.NET应用程序退出目录就消失了.

如何在仍允许正确删除目录的同时观看目录?

.net c# filesystemwatcher

2
推荐指数
1
解决办法
1247
查看次数

Android Studio生成存根,不包含在Android Wear支持库中

我不确定我是疯了还是什么,但是Android Studio 0.8.0会生成一个Mobile + Wear应用程序,但是WatchActivity将WatchActivity作为手表的MainActivity的子类.那将是美好和花花公子,但课程不存在.

开发者应该做什么?根据JavaDocs,唯一可用的是android.support.wearable.activity.InsetActivity和android.support.wearable.activity.ConfirmationActivity.

java android android-support-library google-play-services wear-os

2
推荐指数
1
解决办法
2695
查看次数