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

C equivalent of C++'s double colons?

本文关键字:相当于 C++      更新时间:2023-10-16

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

如果有帮助,这里是教程的链接:

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: %sn", path.c_str(), SDL_GetError());
}
return loadedSurface:
}

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

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

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

SDL_Surface *loadSurface(const char *path)

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

SDL_Surface *loadedSurface = SDL_LoadBMP(path);

如果您对学习C++不感兴趣,std::string做什么以及为什么需要.c_str()的详细信息无关紧要,在这种情况下也与本教程无关。

与这里的::无关。整个std::string只是指一个字符串,它可能在 C 中表示为const char *(或者char *也许,因为我想 C 程序员并不关心变量的恒定性(。path.c_str()只是意味着从std::string变量path获取const char *,因此您可以安全地忽略它。