小编cme*_*eub的帖子

是否可以在用户定义的文字中禁用GCC警告缺少下划线?

void operator"" test( const char* str, size_t sz  )
{
    std::cout<<str<<" world";
}

int main()
{
    "hello"test;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在GCC 4.7中,这会生成"警告:未在'_'之前的文字运算符后缀保留用于将来的标准化[默认启用]"

我理解为什么会产生这个警告,但是GCC说"默认启用".

是否可以在不通过-w标志禁用所有警告的情况下禁用此警告?

c++ user-defined-literals c++11

15
推荐指数
1
解决办法
1328
查看次数

在c ++中进行逻辑AND +赋值,安全吗?

我刚刚学会了这个伟大的模式(实际上来自javascript),我想将它应用到我的c ++代码中.

为了解释模式,假设我将字符串表示为这些的链接列表:

struct link_char;
struct link_char
{
   link_char * next;
   char code;
};
Run Code Online (Sandbox Code Playgroud)

请注意,任何link_char字符串的最后一个字符始终具有代码== 0.这个属性意味着我可以检查字符串中的值,同时使用&&短路来防止NULL指针访问.

bool equals_hello( const link_char * first_char )
{
    const link_char * c = first_char;

    return       c->code=='h' 
    && (c=c->next)->code=='e' 
    && (c=c->next)->code=='l' 
    && (c=c->next)->code=='l' // if string == "hel", we short-circuit here
    && (c=c->next)->code=='o';
}
Run Code Online (Sandbox Code Playgroud)

我的问题是安全性,而不是可读性.我知道只要&&没有超载,短路就会起作用.但是,赋值操作是否会以正确的顺序发生,还是实现定义?

以上示例明确说明了读/写可能发生的位置,但我也想在可能存在副作用的情况下使用此模式.例如:

// think of these as a bunch of HRESULT type functions 
//   a return value of 0 means SUCCESS
//   a return value of non-zero yields an Error Message …
Run Code Online (Sandbox Code Playgroud)

c c++ cross-platform variable-assignment logical-operators

10
推荐指数
1
解决办法
1562
查看次数

如何禁用向上/向下键来滚动浏览Visual Studio中的方法重载?

在Visual Studio 2010 C++/C#(以及VS的几乎每个版本)中,当工具提示处于活动状态时,向上/向下箭头键将滚动工具提示方法重载(通过键入方法名称或按Ctrl + Shift + Space键同时在方法内).

有没有办法禁用此功能?当这些工具提示出现时,我在尝试使用键盘导航文件时经常挂断.如果有一种方法可以使用Ctrl +向上/向下滚动方法重载,那将会很棒,但完全禁用该功能就足够了.

我只想让我的文本编辑器让我导航和编辑文本并停止劫持我的箭头键.有任何想法吗?

c# c++ keyboard-shortcuts visual-studio-2010 visual-studio

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