当我在GCC中启用链接时间优化时,生成的二进制文件变得更大.我希望GCC能够删除大量的reduntant函数,并执行其他不可能的优化,那么为什么生成的输出会增长?
编译器标志:
-Os -c -fno-builtin -ffunction-sections -fdata-sections -flto -mcpu=cortex-m0 -mthumb
Run Code Online (Sandbox Code Playgroud)
链接器标志:
-nostdlib -s -Xlinker --gc-sections -flto -mcpu=cortex-m0 -mthumb -T
Run Code Online (Sandbox Code Playgroud) 我将我的代码放在一个私有的Github.com repo中,还有一个私有的Microsoft Visual Studio Online git repo.现在我想自动镜像/同步它们.因此,当我向Github检查某些内容时,它也会推送到VS Online,反之亦然.
我知道如何通过在我的本地仓库中添加额外的push-remotes来实现"客户端".但这也可能是"服务器端"吗?使用Github Webhooks或微软的东西?
因为否则我必须指示每个想要处理代码的人,添加两个遥控器,或者我错了?
我用250行填充Datagrid.当用户使用滚动条向下滚动时(例如,低于75%),我想从数据库中获取接下来的250行,依此类推.我们的想法是,网格可能有数百万个结果,我们不希望将它们全部加载,直到用户请求它们为止.这有一个现有的机制吗?
编辑:因为似乎有很多困惑:我不是在寻找标准数据虚拟化解决方案,我已经使用过它们了.但是它们都要求你提前指定"虚拟行"的数量,而这个查询对我来说代价很高.他们之所以需要它,是因为当你知道网格中的总项数时,它会更容易计算当前页面/偏移量等.但是计算该数量是一个非常昂贵的SQL查询,所以我想迁移到另一个我可以跳过COUNT()查询的解决方案.
我正在编写嵌入式固件,并发现有时很难确定何时需要使用volatile.
当我有一个等待某个布尔标志被中断改变的函数时,很明显该标志需要是易失性的,因为该函数会永远等待,因为编译器没有意识到该值可以由打断.
但是当我有一个只检查第一行中的标志的短函数时,我希望标志不需要是volatile,因为每次进入函数时它的值都会被读取?所以当一个中断在我第一次调用函数和第二次调用函数之间修改它的值时,我将得到新值.或者是否无法保证每次进入该功能时都会清除所有缓存寄存器?
我刚读过这篇文章,阻止了1024位以下的RSA密钥,在我的.NET软件中,我大量使用了384位密钥.我的程序是否仍然可以使用RSACryptoServiceProvider从MachineKeyStore生成/存储/读取密钥?或者我会被迫发送补丁?
我有一个包含值历史记录的数组,当添加新值时,我需要将所有先前的值向左移动一个位置,以松开最旧的值并为下一个值腾出空间.
通过使用memmove,我可以想到两种方法:
memmove(&arr[0], &arr[1], sizeof(arr) - sizeof(*arr));
Run Code Online (Sandbox Code Playgroud)
或者通过交换指针:
for (i = 0; i != sizeof(arr) - 1; i++) {
*(arr + i) = *(arr + i + 1);
}
Run Code Online (Sandbox Code Playgroud)
两种方法之间是否存在性能差异,如果不存在,建议使用哪种方法?
当你有一个按钮,并执行以下操作:
Private Function Button_OnClick
Button.Enabled = False
[LONG OPERATION]
End Function
Run Code Online (Sandbox Code Playgroud)
然后该按钮不会变灰,因为长操作会阻止UI线程重新绘制控件.我知道正确的设计是启动后台线程/调度程序,但有时这对于简单的操作来说太麻烦了.
那么如何强制按钮在禁用状态下重绘?我在Button上尝试了.UpdateLayout(),但它没有任何效果.我也尝试过使用WinForms时通常可以正常工作的System.Windows.Forms.DoEvents(),但它也没有效果.
我有一个大的VB6项目,其中很多变量没有明确定义的类型,因此它们自动默认为Variant类型.手动找到所有这些是一项艰巨的任务,那么有什么方法可以实现自动化吗?在VB.Net中,可以使用"Option Strict"禁用所有变体的自动使用,但VB6没有该选项.
现在我添加DefByte A-Z到每个类,它使默认类型'Byte'而不是'Variant'.这让我在运行时捕获了很多未定义的变量,只要它们被分配了一个大于255的值.但它仍然不是完全万无一失的.
是否有更可靠的方法来检测所有未定义的变量?
我正在用C#编写一个库,但我需要使它异步.通常,您公开一组DLL函数,它们接受输入参数,并在完成时返回一个值.但是我怎样才能创建一个库函数(可以从C++/Delphi/Etc中调用),它在开始输入的同时已经开始流回输出?
我现在看到的唯一解决方案是使用套接字/管道/等进行通信,而不是DLL调用.
有人有一个例子如何使用普通的DLL调用吗?
当我调用一个需要指针的函数时,我传入一个值,我得到了这个警告,我喜欢这样.
但是当值恰好是字面值'0'时,我没有得到警告.我认为这是因为C认为它是空指针,而不是值.有没有办法仍然得到0文字的警告,因为我已经有一些错误因为它.
c ×3
c99 ×3
gcc ×3
wpf ×2
.net ×1
api ×1
arm ×1
arrays ×1
asynchronous ×1
azure-devops ×1
c# ×1
casting ×1
cryptoapi ×1
cryptography ×1
database ×1
datagrid ×1
dispatcher ×1
dll ×1
embedded ×1
git ×1
github ×1
interface ×1
linker ×1
performance ×1
pointers ×1
rsa ×1
scroll ×1
strict ×1
tfs ×1
ui-thread ×1
variables ×1
variant ×1
vb6 ×1
volatile ×1