小编cpx*_*cpx的帖子

C中的"常量表达式"是什么,不是什么?

即使在经过多次Google搜索之后,我对C语言中的常量表达式有什么不同感到困惑.你能提供一个C的常量表达式的例子吗?

c constant-expression

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

在SDL 1.3中创建OpenGL 3.2/3.x上下文

我遇到的问题是SDL表示它不支持OpenGL 3.x上下文.我正在尝试遵循本教程:在SDL(C/SDL)中创建跨平台OpenGL 3.2上下文.我在这种情况下使用GLEW,但我也无法使用gl3.h来处理这个问题.这是我最终得到的代码:

#include <glew.h>
#include <SDL.h>    

int Testing::init()
        {
            if(SDL_Init(SDL_INIT_EVERYTHING) < 0)
            {
                DEBUGLINE("Error initializing SDL.");
                printSDLError();
                system("pause");
                return 1; // Error
            }

            //Request OpenGL 3.2 context.
            SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
            SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);

            //set double buffer
            SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

            //Create window
            window = SDL_CreateWindow("OpenGL 3.2 test",
                SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                600, 400, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
            if(window == NULL) return 3; // Error

            //Print errors to console if there are any
            printSDLError(__LINE__);

            //Set up OpenGL context.
            glContext = SDL_GL_CreateContext(window);
            printSDLError(__LINE__);
            if(glContext == NULL) …
Run Code Online (Sandbox Code Playgroud)

c++ opengl sdl opengl-3

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

覆盖Java中没有子类化的方法

我最近开始了一个新项目,第一次看到了如下所示的覆盖使用情况.

public class SomeClass {
  public void myMethod() {
    XStream xstream = new XStream() {
            @Override
            protected MapperWrapper wrapMapper(MapperWrapper next) {
                return new MapperWrapper(next) {
 // the rest ommitted
Run Code Online (Sandbox Code Playgroud)

基本上,它覆盖了thinkworks xstream api中XStream类的wrapMapper()方法,但没有让SomeClass扩展XStream类.我和Java一起工作了很多年,但这是我第一次看到这样的压倒一切.有人可以解释它的内外情况吗?谢谢.

java overriding

9
推荐指数
2
解决办法
6898
查看次数

什么是'标识符'是C++中的'名字'?

何时在C++中称为"名称"的"标识符"?我主要读到"名称"一词过于使用而不是"标识符",例如:

struct S { int i };
S thing1;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,是thing1一个名称IDENTIFER?或者术语"标识符"和"名称"是类似的吗?在C中,在引用对象时是否使用术语"名称"?

c c++ naming-conventions

9
推荐指数
1
解决办法
305
查看次数

在限制之间搜索std :: string

如果您知道字符串中的开始和结束位置,从哪里开始并结束搜索.例如 -

string s = StringStringString

|S |t |r |i |n |g |S |t |r |i |n |g |S |t |r |i |n |g
 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17
Run Code Online (Sandbox Code Playgroud)

如何在字符串中找到"tr",指定开始搜索的位置在索引6处,结束搜索的位置是索引9.

我正在尝试设置一个搜索限制,所以它不会超越它.

c++ string stl

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

将struct转换为字节

如何在具有little-endian的处理器上将任何结构转换为字节数组?

c++

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

插入对作为地图值

typedef pair<unsigned char, unsigned char> pair_k;
map<unsigned char, pair_k> mapping;
Run Code Online (Sandbox Code Playgroud)

将以这种方式使用:

mapping[100] = make_pair(10,10);
Run Code Online (Sandbox Code Playgroud)

问题是:

  1. 这是允许的吗?从语法上讲,感觉还不错.
  2. 这可以作为一个数组访问,与地图相对吗?

c++ stl map

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

C++无法将'const char*'转换为'std :: string*'

我在下面有这个代码,我在编译时遇到错误:

error: cannot convert 'const char*' to 'std::string*' for argument '1' to 'void sillyFunction(std::string*, int)'

#include <iostream>
#include <string>

using namespace std;
int counter = 0;

void sillyFunction(string * str, int cool=0);

int main(){
    sillyFunction("Cool");
    sillyFunction("Cooler", 1);
    return 0;
}

void sillyFunction(string * str, int cool){
    counter++;
    if (cool){
        for (int i=0; i<counter; i++) cout << *str << endl;
    } else {
        cout << *str << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ string stl

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

未定义的行为:尝试访问函数调用的结果时

以下编译并打印"string"作为输出.

#include <stdio.h>

struct S { int x; char c[7]; };

struct S bar() {
    struct S s = {42, "string"};
    return s;
}

int main()
{
    printf("%s", bar().c);
}
Run Code Online (Sandbox Code Playgroud)

显然,这似乎引发了一个未定义的行为

C99 6.5.2.2/5如果尝试修改函数调用的结果或在下一个序列点之后访问它,则行为未定义.

我不明白它在哪里说"下一个序列点".这里发生了什么?

c c99 function-calls undefined-behavior

8
推荐指数
3
解决办法
232
查看次数

MSVC上的模板参数推断失败:bug?

以下无法在VC++ 8.0编译器上编译时出错(我还没有在最新的visual studio编译器上尝试过.)

错误C2440:'return':无法从'const char*'转换为'const char(&)[6]'

template <typename T>
inline T const& compare (T const& a, T const& b)
{
    return a < b ? b : a;
}

int main()
{
    ::compare("string1", "string2");
}
Run Code Online (Sandbox Code Playgroud)

在函数模板中,似乎是字符串const char (&)[6].

据我所知,当<应用运算符时,数组应该衰减为指针.那么,这个错误可能是因为可能的错误吗?

c++ templates visual-studio-2005

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