小编ava*_*kar的帖子

英特尔C++编译器作为微软的替代品?

有人在这里使用英特尔C++编译器而不是微软的Visual c + +编译器吗?

我非常有兴趣听听您在集成,性能和构建时间方面的经验.

c++ ide compiler-construction visual-studio

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

为什么选择这种转换运算符的重载?

考虑以下代码

struct any
{
    template <typename T>
    operator T &&() const;

    template <typename T>
    operator T &() const;
};
int main()
{
    int a = any{};
}
Run Code Online (Sandbox Code Playgroud)

这里第二个转换运算符由重载决议选择。为什么?

据我了解,这两个运算符分别推导为operator int &&() constoperator int &() const。两者都在可行的功能集中。通读 [over.match.best] 并没有帮助我弄清楚为什么后者更好。

为什么后者的功能比前者好?

c++ language-lawyer overload-resolution c++17

27
推荐指数
2
解决办法
760
查看次数

我可以用Android制作一个相当原生的C++应用程序吗?

我对以下功能感兴趣:

  1. 为Android Market编写一个完全用C++编写的应用程序(实际上是现有产品的一个端口).
  2. 使用快速屏幕缓冲像素推送(或者更确切地说使用OpenGL ES).
  3. 获取用户输入并将其指向C++代码.

为Market编写这样的应用程序是否合法?市场政策对某些事情是否严格要求?

c++ android opengl-es pixels

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

C中的信号处理

如何在C中实现Ctrl-C和Ctrl-D的信号处理....所以如果按下Ctrl-C,程序将忽略并尝试再次从用户那里获得输入...如果Ctrl-D是按下然后程序将终止...

我的计划如下:

int main(){
 char msg[400];

 while(1){
   printf("Enter: ");
   fgets(msg,400,stdin);
   printf("%s\n",msg); 
 }
}
Run Code Online (Sandbox Code Playgroud)

谢谢,

戴夫

c unix shell signals

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

在一行中压缩分配和错误检查有什么好处?

此问题的灵感来自此问题,其中包含以下代码段.

int s;
if((s = foo()) == ERROR)
    print_error();
Run Code Online (Sandbox Code Playgroud)

我发现这种风格难以阅读并且容易出错(正如原始问题所示 - 它是由于在作业周围缺少括号而引起的).我会写下面的内容,实际上字符更短.

int s = foo();
if(s == ERROR)
    print_error();
Run Code Online (Sandbox Code Playgroud)

这不是我第一次看到这个成语,我猜这里经常使用的原因(也许是历史的).这些原因是什么?

c c++ coding-style

19
推荐指数
3
解决办法
513
查看次数

破坏具有静态存储持续时间的对象

考虑以下程序.

struct s { ~s(); };
void f()
{
    static s a;
}

struct t { ~t() { f(); } };
int main()
{
    static s b;
    static t c;
}
Run Code Online (Sandbox Code Playgroud)

我试图找出关于静态对象破坏的标准保证是什么,但我发现C++ 03 [basic.start.term]的文本相当不足.

是否定义了程序的行为?如果是这样,静态对象的破坏顺序是什么a,b并且c?如果会发生什么s::~s引发了异常?请解释您的推理,最好使用标准中的引号.

c++

15
推荐指数
2
解决办法
2042
查看次数

返回C++中构造函数的类型

我知道C++中没有返回类型的构造函数

但是,下面的代码编译正确.下面的代码中的构造函数返回了什么?

class A{

public:
A() {}
}


A a = A();      //what is returned by A() here, why?
Run Code Online (Sandbox Code Playgroud)

这里有冲突吗?

c++ constructor

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

std :: less是否必须与指针类型的相等运算符一致?

我昨天碰到了一个问题,我最终将其提炼成以下最小的例子.

#include <iostream>
#include <functional>

int main()
{
    int i=0, j=0;
    std::cout
        << (&i == &j)
        << std::less<int *>()(&i, &j)
        << std::less<int *>()(&j, &i)
        << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

当使用启用了优化的MSVC 9.0进行编译时,此特定程序将输出000.这意味着

  1. 指针不相等,和
  2. std::less两个指针都没有按照另一个指令排序,这意味着两个指针根据强加的总顺序相等std::less.

这种行为是否正确?std::less不需要与平等运算符一致的总顺序是什么?

是否允许输出以下程序1

#include <iostream>
#include <set>

int main()
{
    int i=0, j=0;
    std::set<int *> s;
    s.insert(&i);
    s.insert(&j);
    std::cout << s.size() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers

13
推荐指数
2
解决办法
469
查看次数

我可以将空指针传递给memcmp吗?

特别是,以下定义明确,还是表现出未定义的行为?

memcmp(0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

这在C和C++之间有区别吗?理想情况下,请提供标准报价.

c c++ memcmp

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

强制C++函数的用户确认数值常量参数的语义含义的最佳方法是什么?

我想编写函数接口,强制用户承认内置常量的语义.例如,我想采取

void rotate(float angle); // Rotate the world by an angle in radians.
Run Code Online (Sandbox Code Playgroud)

并将其更改为

void rotate(Radians angle);
Run Code Online (Sandbox Code Playgroud)

我是否正确地相信制作Radians类的问题在于它会增加代码并使程序变慢.有一个更好的方法吗?

c++

12
推荐指数
3
解决办法
1014
查看次数