草庐IT

constness

全部标签

go - Go 没有 const 限定符的理由是什么?

我是一名C++高级程序员。我目前正在做一些围棋编程。我真正怀念的唯一特性是const限定符。在go中,如果你想修改一个对象,你传递它的指针。如果您不想修改它,则按值传递它。但是如果结构很大,你应该通过指针传递它,这会覆盖不可修改的特性。更糟糕的是,你可以按值传递一个对象,但如果它包含一个指针,你实际上可以修改它的内容,这会带来可怕的竞争条件危险。某些语言类型(例如map和slice)具有此功能。这发生在一种应该为并发而构建的语言中。所以避免修改的问题在Go中真的不存在,你应该按值传递不包含指针的小对象(你必须知道对象不包含指针),如果他们不会被修改。有了const,你可以通过const

go - Cgo:找不到使用带有 const char* 参数的回调的方法

我正在使用Go中的C库,使用Cgo并且除了回调之外一切都很好。库有回调setter,它接受指向回调函数的指针。回调函数本身用go编写并使用Cgo语法导出。问题:我可以使用char*参数创建和导出函数,但不能使用constchar*。代码说明:test.go:packagemain/*typedefvoid(*cb_func)(constchar*,int);voidcallback(cb_func);voidmyFunc(constchar*,int);*/import"C"import("fmt""unsafe")//exportmyFuncfuncmyFunc(buf*C.char

go - 为什么允许 "const true = false"?

您使用的是哪个版本的Go(go版本)?https://play.golang.org你做了什么?运行一个小程序:packagemainimport"fmt"consttrue=falsefuncmain(){if(true==false){fmt.Println("Trueequalstofalse")}fmt.Println("HelloWorld")}https://play.golang.org/p/KwePsmQ_q9您希望看到什么?我正在使用已定义的名称创建常量并可能破坏整个应用程序的错误或警告消息。你看到了什么?运行没有问题。没有警告或任何阻止创建具有已定义名称的新常量的内

VC++ 2019 “const char*“类型的实参与“LPCTSTR“类型的形参不兼容,的解决办法

一、问题描述项目使用Unicode编码,当使用tinyxml2读取xml内容时,利用root->Name()获取的是constchar*类型的字符串,直接传递给Edit->SetWindowTextW(),报以下错误严重性代码说明项目文件行禁止显示状态错误(活动)E0167“constchar*”类型的实参与“LPCTSTR”类型的形参不兼容MFCTinyxml2C:\WebSite\MFCTinyxml2\MFCTinyxml2Dlg.cpp106导致无法正常编译严重性代码说明项目文件行禁止显示状态错误C2664“voidCWnd::SetWindowTextW(LPCTSTR)”:无法将参

VC++ 2019 “const char*“类型的实参与“LPCTSTR“类型的形参不兼容,的解决办法

一、问题描述项目使用Unicode编码,当使用tinyxml2读取xml内容时,利用root->Name()获取的是constchar*类型的字符串,直接传递给Edit->SetWindowTextW(),报以下错误严重性代码说明项目文件行禁止显示状态错误(活动)E0167“constchar*”类型的实参与“LPCTSTR”类型的形参不兼容MFCTinyxml2C:\WebSite\MFCTinyxml2\MFCTinyxml2Dlg.cpp106导致无法正常编译严重性代码说明项目文件行禁止显示状态错误C2664“voidCWnd::SetWindowTextW(LPCTSTR)”:无法将参

c++ - C语言上 "static const char array"可以包含变量的成员吗

我的代码如下#includestaticconstchar*a="thisisa";staticconstchar*b="thisisb";char*comb_ab[2]={a,b};intmain(){inti=0;for(i=0;i此代码在G++编译器(C++)上正常运行。但海湾合作委员会不工作..输出如下test.c:8:2:error:initializerelementisnotconstanta,^test.c:8:2:error:(nearinitializationfor‘comb_ab[0]’)test.c:10:1:error:initializerelementi

将 char * 转换为 char * const *

请原谅这个问题的基本“性”。我有时不知所措。我有一个char*但我需要将它转换为char*const*才能在fts()函数中正确使用它。我该怎么做?谢谢 最佳答案 你不应该做那种转换,因为类型不兼容。关于指针和指向指针的指针char*是一个指向字符串的指针,而char**是一个指向字符串的指针。(const是一个奖励)。这可能意味着您不应提供字符串,而应提供字符串数组。这两件事显然是不相容的。不要将它们与Actor混在一起。关于fts_*API要找到您问题的解决方案,我们需要阅读fts_*函数API(例如http://linux.d

linux - std::exception(const char*) 非标准构造函数的替代方法

我的VisualC++代码使用接受字符串的std::exception构造函数,我正在尝试将代码移植到Linux/G++。我应该使用什么异常类? 最佳答案 MicrosoftVisualC++的std::exception(constchar*)构造函数是非标准的。在C++标准库中,std::exception有一个constchar*what()const方法,它不提供指定字符串的方法,除非通过覆盖。您应该重写代码以使用std::runtime_error或来自的其他类别之一作为备选。当然,不需要更改捕获std::exceptio

php - 'const' 与 PHP 中的 'static'

这个问题在这里已经有了答案:PHP5:constvsstatic(7个回答)关闭9年前。在PHP5中,我可以为类声明一个const值:classconfig{constmailserver='mx.google.com';}但我也可以声明publicstatic:classconfig{publicstatic$mailserver='mx.google.com';}如果是我稍后会用到的配置文件,例如:imap_connect(config::$mailserver...imap_connect(config::mailserver...您认为哪个选项更适合使用?(更快,更少的内存负载

php - 在 PHP 中, "final static"和 "const"有什么区别?

我意识到这个问题已经在其他地方针对不同的编程语言提出过...但这不是PHP领域中相同答案的100%指标,所以我问这个问题。谁能告诉我“finalstatic”和“const”之间的区别,特别是在PHP中? 最佳答案 最终方法或类不能被子类修改。这可以防止类继承、方法覆盖和/或方法的重新定义。Onlyclassdefinitionsand/ormethodsinsideaclasscanbedefinedasfinal.静态将类方法或属性声明为静态值,以便您无需实例化对象即可访问它们。这些在父类和子类之间共享。Aclassdefini