小编Edw*_*inW的帖子

什么 - 或做 - "挥发性无效功能(......)"做什么?

从语法的角度来看,我已经看过"volatile"关键字在C++函数中有多少用法?关于在函数上使用volatile关键字,但没有明确解释该问题的案例1做了什么.只有一位受访者表示这似乎毫无意义/无用.

然而,我不能完全接受这种说法,因为GNUC的AES软件实现已经使用了几年,它们有许多这样的功能:

INLINE volatile void functionname( /* ... */ ) {
    /* ... */
    asm( /* ... */ ) // embedded assembly statements
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

必须有这种用法的原因.谁能:

.告诉我原来的原因是什么; 和

.现在如何达到理想的效果?

我正在使用Ubuntu和GCC 4.6.3.


注意: 我最接近解释的是,在GCC 2.5之前,您可以通过以下方式欺骗在2.5中实现的'noreturn'属性:

void fatal( /* ... */ ) { /* ... */ exit(1); }

typedef void voidfn ();

volatile voidfn fatal;
Run Code Online (Sandbox Code Playgroud)

这将允许编译器识别'致命'不会返回.

但是这种情况似乎不适用于AES代码.自从我在集会上做了很多事以来,已经有很长一段时间了,但我想我会认识到跳跃或类似的事情.

c function aes volatile void

21
推荐指数
3
解决办法
1万
查看次数

如何在Maven中正确使用Wildfly的罐子?

我正在开发一个部署到Wildfly的项目,我正在使用Maven来构建它.这是一个包含多个war/jar/ear文件的复杂项目,因此有一个父pom.xml,其中包含以下内容:

...
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.wildfly.bom</groupId>
      <artifactId>jboss-javaee-7.0-with-all</artifactId>
      <version>8.1.0.Final</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
...
  </dependencies>
</dependencyManagement>
...
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面的BOM不包括我知道的默认Wildfly 8.1.0.Final发行版中的各种jar文件.特别是,这个问题的原因是cxf-api jar文件.我知道它位于Wildfly的这个位置:

wildfly-8.1.0.Final/modules/system/layers/base/org/apache/cxf/main/cxf-api-2.7.11.jar
Run Code Online (Sandbox Code Playgroud)

但它不是由为Wildfly推荐的BOM管理的.

如何正确地将cxf-api和类似的jar文件添加到项目的pom.xml中,最好不必单独指定每个文件?当然,我可以这样做:

<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-api</artifactId>
  <version>2.7.11</version>
  <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但我真的不必为每个已经属于Wildfly的jar文件执行此操作.

是否有我可以导入的BOM?

maven wildfly-8

13
推荐指数
1
解决办法
9150
查看次数

如何彻底抹去Emacs Calc的状态?

这必须是一个愚蠢的简单问题,但我无法找到答案,尽管多次搜索Google多次,并挖掘Calc文档.

通过Calc运行GIVEN Emacs实例,并执行多个计算,包括存储变量和方程式,其中一些可能来自"〜/ .emacs.d/calc.el"文件,

如何重新启动Emacs的情况下将Calc返回到原始状态?

原始:堆栈上没有任何东西.没有任何东西在路上.没有存储的变量或方程式.等等.

emacs calc

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

使用嵌套的boost :: binds

Compiler: g++ 4.4.3
Boost...: 1.49.0
OS......: Ubuntu

注意:自从我认真使用C++已有15年了,所以我正在重新学习和学习新东西,因为我也尝试学习Boost.

给出以下代码:

1.      class Beta {
2.      public:
3.          std::string name();
4.      }
5.      
6.      class Alpha {
7.      public:
8.          Beta m_beta;
9.      }
10.     
11.     Alpha one;
Run Code Online (Sandbox Code Playgroud)

由于各种原因,我想使用boost:bind来实现与调用"one.m_beta.name()"相同的结果.我认为以下会这样做:

12.     boost::function<std::string(Alpha)>
13.         b = boost::bind(
14.             &Beta::name,
15.             boost::bind(&Alpha::m_beta, _1)
16.         );
17.     cout << "NAME = " << b(one) << "\n";
Run Code Online (Sandbox Code Playgroud)

但是当我编译(在Ubuntu上的g ++ 4.4.3)时,我收到以下错误:

错误:从'const Beta*'无效转换为'Beta*'

在查看由第13-16行产生的实际类型定义之后,看起来第15行变为'const Beta*',但是包装它的绑定期望'Beta*'.

但是,这个DOES工作:

30.     boost::function<std::string(Beta)>
31.         p1 = boost::bind(&Beta::name,_1);
32.     boost::function<Beta(Alpha)>
33.         p2 = boost::bind(&Alpha::m_beta,_1); …
Run Code Online (Sandbox Code Playgroud)

c++ boost-bind

4
推荐指数
1
解决办法
2120
查看次数

标签 统计

aes ×1

boost-bind ×1

c ×1

c++ ×1

calc ×1

emacs ×1

function ×1

maven ×1

void ×1

volatile ×1

wildfly-8 ×1