C 相当于 C++ 的双冒号?

C equivalent of C++'s double colons?

我正在学习C,对C++一无所知。使用 C++ 的 LazyFoo 的 SDL2 教程使用双冒号做了一件我不理解的事情,因此无法在 C 中遵循。

如果有帮助,这里是 link 教程:

http://lazyfoo.net/tutorials/SDL/04_key_presses/index.php

SDL_Surface *loadSurface( std::string path )
{
    //Load image at specified path
    SDL_Surface *loadedSurface = SDL_LoadBMP( path.c_str());
    if( loadedSurface == NULL )
    {
        printf("Unable to load image %s! SDL Error: %s\n", path.c_str(), SDL_GetError());
    }

    return loadedSurface:
}

除了函数参数和 LoadBMP 参数外,这里的所有内容对我来说都很有意义。我不知道 :: 是什么意思,我也不知道 path.c_str() 指的是什么。

拜托,有人可以用在 C 中有意义的方式解释它,或者建议一个仅 C 的解决方法吗?

与这里的::无关。 std::string 作为一个整体只是指一个字符串,在 C 中可能表示为 const char *(或者 char *,因为我猜 C 程序员不关心变量的常量性). path.c_str() 只是意味着从 std::string 变量 path 中得到一个 const char *,所以你可以放心地忽略它。

在 C 中,loadSurface 将简单地声明为

SDL_Surface *loadSurface(const char *path)

这意味着对SDL_LoadBMP的调用可以写成

SDL_Surface *loadedSurface = SDL_LoadBMP(path);

如果您对学习 C++ 不感兴趣,那么 std::string 的作用和为什么需要 .c_str() 的详细信息与本教程无关。