小编Ven*_*esh的帖子

can void*用于存储函数指针?

void*以这样的方式定义,它可以指向任何东西.那么它可以用来指向一个函数(int send())吗?

int send();
void* p = send;
Run Code Online (Sandbox Code Playgroud)

可能吗?当我这样使用时,它没有向我显示错误原因?如果没有,有没有办法将所有指针存储在一个变量中?

c c++ function-pointers void-pointers

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

我可以用C++覆盖运算符吗?

我知道我们可以为一个类重载运算符.但我的问题是我是否可以覆盖运营商?

让我们考虑一下我有一个基类和派生类,是否可以覆盖派生类中基类中的运算符定义(重载)(与函数重写一样)?

c++ oop c++11

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

为什么在C中不能超载?

我知道在C中不可能进行重载,我想知道:为什么类中的重载函数和类外部在C++中处理相同?

在C++中考虑这种情况,其中函数在类外声明:

foo()
foo(char c)
foo(int a, int b)
Run Code Online (Sandbox Code Playgroud)

如果C++将每个函数头视为唯一,为什么C不能这样做呢?

我认为这些可能是原因:

  • 函数重载是在C++中引入的,因此在C中不可用.
  • 多态性是一种OOP概念,但C不是面向对象的.

C中是否存在函数重载不可用的原因?

c c++ oop overloading

7
推荐指数
2
解决办法
495
查看次数

Switch语句不适用于数字对象

我是R编程的新手.我不知道是否可以将switch语句用于数值对象.

这是我的代码,

myfunction <- function() {
    x <- 10
    switch(x,
        1={
            print("one")
        },
        2={
            print("two")
        },
        3={
            print("three")
        },
        {
            print("default")     #Edited one..
        }
    )
}
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误,

test.R:4:18: unexpected '='
3:         switch(x,
4:                 1=
                    ^
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

r switch-statement

6
推荐指数
2
解决办法
2267
查看次数

我们可以让JVM抛出我们自己的用户定义的异常吗?

在java预定义的异常中自动抛出.喜欢,

int a=10, b=0;
c = a/b;
Run Code Online (Sandbox Code Playgroud)

抛出ArithmeticException

int a[3] = {1, 2, 3};
int b = a[4];
Run Code Online (Sandbox Code Playgroud)

抛出ArrayOutOfBoundException

其中在用户定义的异常的情况下,我们应该创建该Exception类的对象并手动抛出它.可以使我自己的Exception行为与上述两种情况一样吗?

java exception-handling

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

当错误 1224: ERROR_USER_MAPPED_FILE 发生时?

我想真正了解何时ERROR_USER_MAPPED_FILE发生。所以我写了一些片段。重现错误。但它没有用。请帮我修复我的代码

流程一:

    HANDLE hFile = CreateFile("C:\\test\\full.exe", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
        OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile == INVALID_HANDLE_VALUE)
        return GetLastError();

    HANDLE hMapFile = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
    if (hMapFile == INVALID_HANDLE_VALUE)
        return GetLastError();

    mapHandles.push_back(hMapFile);

    viewHandles.push_back(MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0));
Run Code Online (Sandbox Code Playgroud)

我正在暂停该进程,并且我尚未在此进程中关闭任何地图和文件句柄视图,以便在其他进程尝试打开文件时。我以为会抛出错误 1224。

过程2:

HANDLE hFile = CreateFile("C:\\test\\full.exe", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
    OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

if (hFile == INVALID_HANDLE_VALUE)
    cout << "Error Code : " << GetLastError() << endl;

char buffer[1025];
DWORD bytesRead; …
Run Code Online (Sandbox Code Playgroud)

c++ winapi createfile

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

DeviceIoControl对内存位置的无效访问

当我运行以下代码时,我无法访问内存位置

WIN32_FIND_DATAW FD;
WCHAR cPath[MAX_PATH], cFindPath[MAX_PATH];

if (!GetCurrentDirectoryW(MAX_PATH, cPath))
    ErrorExit("GetCurrentDirectory");
else
    printf("Current Path: %s\n", cPath);

StringCchCopyW(cFindPath, MAX_PATH, cPath);
StringCchCatW(cFindPath, MAX_PATH, L"\\*");

BOOL bsuccess;

HANDLE hFind = FindFirstFileW(cFindPath, &FD);

if (INVALID_HANDLE_VALUE != hFind)
{
    vector<wstring> links;
    do
    {
        WCHAR  fullFileName[MAX_PATH];
        StringCchPrintfW(fullFileName, MAX_PATH, L"\\\\?\\%s\\%s", cPath, FD.cFileName);

        DWORD dwBufSize = MAXIMUM_REPARSE_DATA_BUFFER_SIZE;
        REPARSE_DATA_BUFFER* rdata;
        rdata = (REPARSE_DATA_BUFFER*)malloc(dwBufSize);

        DWORD bytesReturned;
        HANDLE hFile = CreateFileW(fullFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, NULL);
        if (INVALID_HANDLE_VALUE != hFile)
        {
            if (DeviceIoControl(hFile, FSCTL_GET_REPARSE_POINT, NULL, …
Run Code Online (Sandbox Code Playgroud)

c++ winapi reparsepoint deviceiocontrol

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

即使向其添加新成员后,结构大小也保持不变

何时只是执行

cout << sizeof(string);
Run Code Online (Sandbox Code Playgroud)

我得到8作为答案.

现在我有一个结构

typedef struct {
    int a;
    string str;
} myType;
Run Code Online (Sandbox Code Playgroud)

而我正在执行

cout << sizeof(myType);
Run Code Online (Sandbox Code Playgroud)

我得到16作为答案.

现在我改变了我的结构

typedef struct {
    int a, b;
    string str;
} myType;
Run Code Online (Sandbox Code Playgroud)

而我正在执行

cout << sizeof(myType);
Run Code Online (Sandbox Code Playgroud)

我得到16作为答案!怎么样?怎么了?

c++ string struct

0
推荐指数
1
解决办法
99
查看次数

如何检查打印的源代码

我可以使用inspect.getsource(obj).

print(inspect.getsource(gcd))
Run Code Online (Sandbox Code Playgroud)

它打印gcd函数的源代码。当我尝试以下操作时,它会引发错误。

>>>print(inspect.getsource(print))

  File "<stdin>", line 1
     print(inspect.getsourcelines(print))
                                 ^
  SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我可以得到打印的源代码吗?如果是,如何?,如果否,为什么?

python inspect python-2.7

0
推荐指数
1
解决办法
2018
查看次数