我的代码看起来像这样,我想改进它:\n \n\n
// example type\nclass Stuff\n{\n public function __construct($name)\n {\n $this->name = $name;\n }\n\n public function getName()\n {\n return $this->name;\n }\n}\n\n// generator function\nfunction searchStuff()\n{\n yield new Stuff(\'Fou\');\n yield new Stuff(\'Barre\');\n yield new Stuff(\'Bazze\');\n}\n\n// code that iterates over the results of the generator\n$stuffIterator = searchStuff();\nassert($stuffIterator instanceof Iterator);\nforeach ($stuffIterator as $stuff) {\n /** @var Stuff $stuff */\n echo $stuff->getName() . PHP_EOL;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我想要改进的是循环中的注释(倒数第三行),我想完全删除它。原因是
\n\n我的 na\xc3\xafve 方法是声明一个迭代器接口,该接口向通用Iterator接口添加适当的类型注释:
interface StuffIterator extends Iterator\n{\n …Run Code Online (Sandbox Code Playgroud) 标题非常清楚:使用basename(man 3 basename)是否安全__FILE__?
它编译并且似乎工作正常,但是 basename参数是char*(不是const char*),- manpage表示:
dirname()和basename()都可以修改path的内容,因此在调用其中一个函数时可能需要传递一个副本.
所以,这让我担心.
也许问题应该更像:什么类型的__FILE__?这不是字符串文字/ const char*?但如果是,为什么没有编译时错误(const char*to char*)?
有没有办法将可变参数函数强制转换为这样的函数指针,这是合法的吗?我要求C和C++,但由于这个结构存在于两种语言中,我将两个问题都放在一起.
extern int test(int, ...);
auto testptr = (int(*)(int, int, long)) &test;
Run Code Online (Sandbox Code Playgroud)
谢谢,杰克