小编Bur*_*sBA的帖子

gcc -O0仍然优化了"未使用"的代码.是否有一个编译标志来改变它?

当我提出这个问题时,gcc正在删除(是的,带有-O0)一行代码,_mm_div_ss(s1, s2);大概是因为结果没有保存.但是,这应该触发浮点异常并引发SIGFPE,如果删除调用则不会发生这种情况.

问题:是否有一个标志或多个标志传递给gcc,以便代码按原样编译?我在想什么,fno-remove-unused但我没有看到类似的东西.理想情况下,这将是一个编译器标志,而不是必须更改我的源代码,但如果不支持,是否需要使用一些gcc属性/ pragma?

我试过的事情:

$ gcc --help=optimizers | grep -i remove
Run Code Online (Sandbox Code Playgroud)

没有结果.

$ gcc --help=optimizers | grep -i unused
Run Code Online (Sandbox Code Playgroud)

没有结果.

并明确禁用所有死代码/消除标志 - 请注意,没有关于未使用代码的警告:

$ gcc -O0 -msse2 -Wall -Wextra -pedantic -Winline \
     -fno-dce -fno-dse -fno-tree-dce \
     -fno-tree-dse -fno-tree-fre -fno-compare-elim -fno-gcse  \
     -fno-gcse-after-reload -fno-gcse-las -fno-rerun-cse-after-loop \
     -fno-tree-builtin-call-dce -fno-tree-cselim a.c
a.c: In function ‘main’:
a.c:25:5: warning: ISO C90 forbids mixed declarations and code [-Wpedantic]
     __m128 s1, s2;
     ^
$
Run Code Online (Sandbox Code Playgroud)

来源计划 …

c gcc

46
推荐指数
3
解决办法
4738
查看次数

如何在XML文档中引用类型参数?

如何在 XML 代码文档中引用类型参数?例如,这段代码

/// <summary>
/// An interface.
/// </summary>
/// <typeparam name="TInterface">Type paramter.</typeparam>
public interface IFace<TInterface>
{
    /// <summary>
    /// Does the thing.
    /// </summary>
    /// <typeparam name="TMethod">Different from <see cref="TInterface"/>.</typeparam>
    /// <returns>An integer.</returns>
    int SomeMethod<TMethod>();
} 
Run Code Online (Sandbox Code Playgroud)

给出警告typeparam name="TMethod"

XML 注释具有引用类型参数的 cref 属性“TInterface”。

这个问题询问有关引用泛型类型,但我想引用类型参数。

c# code-documentation visual-studio

11
推荐指数
1
解决办法
2416
查看次数

遍历成本对二进制搜索效率不高.什么是?

当我试图将它应用到现实世界时,二进制搜索让我失望.方案如下.

我需要测试通过无线电通信的设备的范围.通信需要快速进行,但传输速度慢,可达到一定程度(例如,大约3分钟).我需要测试传输是否每200英尺成功一次,直到失败,最多1600英尺.每200英尺将进行一次测试,需要3分钟才能执行.

我天真地认为二元搜索是找到故障点的最有效方法,但考虑到200英尺/分钟的行进速度和3分钟的测试时间.如果在500英尺处发生传输失败,二进制搜索不是找到故障点的最有效方法,如下所示.

在此输入图像描述

只需走路并测试每一个点就可以更快地找到解决方案,只需12分钟,而二进制搜索和测试则需要16分钟.

我的问题:在旅行时间问题上,您如何计算解决方案的最有效途径?这叫什么(例如,二元旅行搜索等)?

algorithm big-o traversal binary-search

8
推荐指数
1
解决办法
439
查看次数

如何将数组引用为空字符串+ true是JavaScript中的有效字符?

我不确定这行javascript中发生了什么:

alert( (''+[][[]])[!+[]+!+[]] ); // shows "d"
Run Code Online (Sandbox Code Playgroud)

我发现了什么:

var a = ! + []; // == true
var b = ! + [] + ! + []; // == 2
Run Code Online (Sandbox Code Playgroud)

似乎第二部分是对一组字母或某种类型的引用,但我不明白它是如何产生的

(''+[][[]])
Run Code Online (Sandbox Code Playgroud)

也:

alert( (''+[][])[2] ); // nothing happens; console says "unexpected token ]"
alert( (''+[[]][])[2] ); // nothing happens; console says "unexpected token ]"
alert( (''+[[]][[]])[2] ); // shows "d"
alert( (""+true)[2] ); // shows "u"
Run Code Online (Sandbox Code Playgroud)

javascript

7
推荐指数
1
解决办法
111
查看次数

为什么在初始化之前通过LD_PRELOAD加载库?

在下面的最小示例中,通过LD_PRELOAD函数加载的库可以拦截fopen并且openat在初始化之前显然正在运行.(Linux是CentOS 7.3).为什么??

库文件comm.c:

#define _GNU_SOURCE
#include <dlfcn.h>
#include <stdarg.h>
#include <stdio.h>
#include <fcntl.h>

typedef FILE *(*fopen_type)(const char *, const char *);

// initialize to invalid value (non-NULL)
// init() should initialize this correctly
fopen_type g_orig_fopen = (fopen_type) 1;

typedef int (*openat_type)(int, const char *, int, ...);
openat_type g_orig_openat;

void init() {
    g_orig_fopen = (fopen_type)dlsym(RTLD_NEXT,"fopen");
    g_orig_openat = (openat_type)dlsym(RTLD_NEXT,"openat");
}

FILE *fopen(const char *filename, const char *mode) {
    // have to do this here …
Run Code Online (Sandbox Code Playgroud)

linux ld-preload

7
推荐指数
1
解决办法
488
查看次数

无法使用实体框架为 Oracle 创建数据库模型

我们有一个现有的 .NET 应用程序,它使用第 3 方 ORM (Telerik) 连接到 Oracle 数据库;我们将迁移到实体框架。

初步设置:

在解决方案中创建一个新项目。安装nuget包:

  • 实体框架 6.1.3
  • Oracle.ManagedDataAccess 12.2.1100
  • Oracle.ManagedDataAccess.EntityFramework 12.2.1100

脚步:

  • 右键单击项目 -> 添加 -> 新项目
  • 数据 -> ADO.NET 实体数据模型(输入名称) -> 添加(下一页)
  • 来自数据库的 EF 设计器(下一页)
  • 单击“新连接”按钮 ->(新对话框)
  • 输入用户名和密码,TNS 连接如下:
  • 连接信息
  • 测试连接(测试连接成功)点击“确定”返回“选择数据连接”对话框
  • “是,包括敏感数据”并将连接字符串保存在 app.config 中,如下所示:
  • 在此输入图像描述
  • 点击下一步

问题:

对话框关闭。没有错误消息。没有选择表的选项。什么都没发生。中的连接字符串没有app.config更新。.edmx项目中没有。它只是默默地失败了。

我尝试了与上述内容稍有偏差(不同的登录凭据,不要保存在 app.config 中,不包含敏感信息,连接信息而不是 TNS,创建一个空白.edmx并稍后更新它),但我无法得到自动生成的任何表。

有任何想法吗?

也许有某种方法可以以某种方式启用对文件的详细日志记录?

附加信息:

  • Windows 7 企业版 sp1 x64
  • Visual Studio 2015 专业版

c# oracle entity-framework

5
推荐指数
1
解决办法
2216
查看次数

如何使用开放XML SDK在Word中创建水平规则?

如何使用开放XML SDK在Word中创建水平规则?

使用C#4.5打开XML SDK 2.0

我正在寻找某种paragraph.append(new HorizontalRule())命令,但似乎找不到任何东西.

c# ms-word openxml

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