标签: qualifiers

const资格转换

从(4.4/1)开始

如果"cv2 T"比"cv1 T"更符合cv,则可以将类型"指向cv1 T的指针"的rvalue转换为"指向cv2 T的指针"的rvalue.

我不知道标准定义'更多cv-qualifield'类型的位置,但据我所知,const的声明符比非const更符合cv.

对于以下转换,标准的引用如何适用或如何知道哪一个更少或更多cv-qualifed?

int *const c1 = 0;
int const* c2 = 0;
const int *const c3 = 0;

c1 = c2; // allowed
c1 = c3; // allowed
Run Code Online (Sandbox Code Playgroud)

更新:

c2 = c1;
c2 = c3;
Run Code Online (Sandbox Code Playgroud)

c++ const qualifiers implicit-conversion

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

类型特征对于基本类型的所有const/volatile/signed/unsigned版本都是如此

考虑以下测试:

std::is_same<T, bool>::value
std::is_same<T, char>::value
std::is_same<T, short int>::value
std::is_same<T, int>::value
std::is_same<T, long int>::value
std::is_same<T, long long int>::value
std::is_same<T, float>::value
std::is_same<T, double>::value
std::is_same<T, long double>::value
Run Code Online (Sandbox Code Playgroud)

问题是,如果T = const unsigned char所有测试都是假的,我希望这个std::is_same<T, char>::value是真的.或者,如果T = volatile signed long long int我想std::is_same<T, long long int>::value成为现实.怎么做type_traits

c++ qualifiers type-traits c++11

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

我在java中的各种CDI限定符中看到的值()是什么?

我已经看到了对values()内部@Qualifier定义的各种引用.我理解@Qualifier为标记系统,但您将它们定义为接口.

一个界面可以允许枚举,但我不明白values()我在下面列出的两个不相关的例子中看到的这个词.

你可以向我解释一下value()这个词是什么意思吗?

@Qualifier
@Retention(RUNTIME)
@Target({FIELD, TYPE, METHOD})
public @interface NumberOfDigits {
    Digits value();
}

public enum Digits {
    TWO,
    EIGHT,
    TEN,
    THIRTEEN
}
Run Code Online (Sandbox Code Playgroud)
package com.byteslounge.bean;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import javax.inject.Qualifier;

@Qualifier
@Retention(RUNTIME)
@Target({FIELD, TYPE, METHOD})
public @interface MessageTransport {

  MessageTransportType value();

}
Run Code Online (Sandbox Code Playgroud)

java qualifiers cdi

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

C抱怨将char**值传递给函数,使用char const*const*const,但C++没有

在解释和创建函数参数的类型时,我很难理解为什么C++比C更"放松"的行为.

C做世界上最简单的事情,它坚持你写的东西就是这样,另一方面,C++以一种我无法理解的扭曲方式运作.

例如,流行的argv是一个char* []传递给函数的时候变成了char**,我真的不明白为什么,我期待和"想要" char * const *但是我得到了这种行为.

您还可以阅读PDF中讨论C和C++之间差异的文章,文章也以这句话结尾:

虽然C++在确定函数签名时会忽略参数声明中的顶级cv限定符,但它并不完全忽略这些cv限定符.

因为我在网上找不到这个问题(嵌入式系统编程 - 2000年2月,这个老问题是免费的),我想知道这句话可能意味着什么.

有人可以解释为什么这种行为是它在C++中的行为?

编辑:

我的一个例子是

#include <stdio.h>

void foo(int argc, const char *const *const argv) {
  printf("%d %s\n", argc, argv[0]);
}

int main(int argc, char *argv[]) {
  foo(argc, argv);
  return (0);
}
Run Code Online (Sandbox Code Playgroud)

如果你编译它,gcc 4.8.1你得到预期的错误

gcc cv_1.c 
cv_1.c: In function ‘main’:
cv_1.c:8:3: warning: passing argument 2 of ‘foo’ from incompatible pointer type [enabled by default]
   foo(argc, argv);
   ^
cv_1.c:3:6: …
Run Code Online (Sandbox Code Playgroud)

c c++ const qualifiers volatile

3
推荐指数
2
解决办法
1448
查看次数

在Spring中定义注入的默认实现?

我有一些其他类扩展的基类。因此,我必须提供能够插入特定实例的限定符。

我想知道是否可以将这些类(例如,最高级的类)中的任何一个标记为默认类,如果没有提供限定符的话,该默认类将被选中@Autowired吗?

@Service
//@Qualifier("Parent")
class ParentRunner;

@Service
@Qualifier("Child")
class ChildRunner extends ParentRunner;
Run Code Online (Sandbox Code Playgroud)

以下内容至少不起作用:

@Autowired
//@Qualifier("Parent")
private ParentRunner runner;
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection qualifiers

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

Excel.ThisWorkbook和ThisWorkbook之间的区别?

我有一些VBA代码在我的办公桌上在Excel工作正常,但在家里它是崩溃的.事实证明我所要做的就是改变

Set shtObj = ThisWorkbook.Sheets(1)
Run Code Online (Sandbox Code Playgroud)

Set shtObj = Excel.ThisWorkbook.Sheets(1)
Run Code Online (Sandbox Code Playgroud)

谁知道为什么?我们的组织刚刚搬到了一个SharePoint平台,我怀疑它正在导致各种各样的伏都教爬行,但我只是在猜测.

excel vba object qualifiers

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

结构可以有一个成员,它是指向同一类型结构的指针吗?

听起来很复杂,但这是一个简单的概念.假设你有一些结构"foo",如果它的成员是指向另一个foo结构的指针(如链表)

这似乎有效.

struct foo {
   struct foo* ptr;
};
Run Code Online (Sandbox Code Playgroud)

但是,如果我想让foo成为一个类型呢?

就像我将如何做以下几点?

typedef struct foo {
   foo* ptr;
} foo;
Run Code Online (Sandbox Code Playgroud)

ptr的声明失败,因为foo还不是限定符.

c struct pointers qualifiers

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

如何在Eclipse中的Java字段中添加`this`限定符?

Eclipse中是否有任何功能可以重构我的代码,以便不合格的字段访问获得this限定符?例如,我在静态方法中编写了一些代码,但现在想将它们更改为非静态方法.我更喜欢使用我的代码样式,this以便它更清晰,更易读.

我想了一个简单的方法foo,并bar在这里:

public class Example
{
    private static String foo = "Hovercraft";
    private static int bar = 9001;

    public static void main(String[] args)
    {
        System.out.println(foo + " has " + bar + " eels.");
    }
}
Run Code Online (Sandbox Code Playgroud)

转入this.foothis.bar更改代码后使用非静态方法:

public class Example
{
    private String foo;
    private int bar;

    public class Example(String theFoo, int theBar)
    {
        this.foo = theFoo;
        this.bar = theBar;
    }

    public void run()
    {
        System.out.println(this.foo + " …
Run Code Online (Sandbox Code Playgroud)

java eclipse qualifiers this

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

此位置不允许使用注释@Qualifier

@Override
@Autowired(required = true)
@Qualifier("hibernateCriteriaBuilder")
public void setCriteriaBuilder(IQueryCriteriaBuilder<Entity> criteriabuilder)
{
  super.setCriteriaBuilder(criteriaBuilder):
}
Run Code Online (Sandbox Code Playgroud)

这在我在java文件中的代码中,我不断收到错误说:"注释@qualifier是为这个位置拨号的." 有人可以向我解释如何解决这个错误吗?我的代码中有两次,但找不到解决方案.

java qualifiers java-ee

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

如何写一个memcpy函数完全MISRA:2012兼容?

我写了这个memcpy函数,但我仍然需要禁用规则11.5和11.8.是否有完整的MISRA:2012兼容解决方案?

#pragma cstat_suppress="MISRAC2012-Rule-21.6" // Uses of stdio.h were found.
#include <stdio.h>

#include <stdint.h>
#include <string.h>
#include <stdlib.h>

extern int main(void);

static int_least8_t _memcpy(void *dst, const void *src, const size_t length)
{
    #pragma cstat_disable="MISRAC2012-Rule-11.5" // A conversion from a pointer to void into a pointer to object was found.
    int_least8_t* destination = (int_least8_t*)dst;
    #pragma cstat_disable="MISRAC2012-Rule-11.8" // A cast that removes a const or volatile qualification was found.
    const int_least8_t* source = (int_least8_t*)src;
    #pragma cstat_restore="MISRAC2012-Rule-11.5","MISRAC2012-Rule-11.8"

    for (size_t i = 0; …
Run Code Online (Sandbox Code Playgroud)

c qualifiers misra void-pointers

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