我刚刚开始接触 C++,我认为最好的方法是查看源代码。我在头文件中有如下代码。
\n\n#ifdef _MSC_VER\n#define MYAPP_CACHE_ALIGNED_RETURN /* not supported */\n#else\n#define MYAPP_CACHE_ALIGNED_RETURN __attribute__((assume_aligned(64)))\n#endif\nRun Code Online (Sandbox Code Playgroud)\n\n我正在使用gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11),而且它很旧。我在编译过程中收到此警告:
warning: 'assume_aligned' attribute directiv e ignored [-Wattributes] \xe2\x80\x93\nRun Code Online (Sandbox Code Playgroud)\n\n如何使 if 语句更具体以修复编译期间的警告?
\n如果我做了这样的功能:
class Counter:
def __init__(self):
self._count = 0
def count(self) -> int:
self._count += 1
return self._count
def reset(self) -> None:
self._count = 0
Run Code Online (Sandbox Code Playgroud)
把它放在python shell中:
>>> s = Counter
>>> s.count()
Run Code Online (Sandbox Code Playgroud)
我最终得到了这个:
TypeError:count()缺少1个必需的位置参数:'self'
难道我做错了什么?我不明白为什么我必须为自己的方法传递一个对象本身.我认为它是自动传递的,因为我使用句点访问该方法.至少这是(我记得,也许是错误的)它在C++中是如此,所以对我来说这对python来说是没有意义的.难道我做错了什么?
基本上,为什么我需要传递s.count(s)而不是s.count().在周期之前,自己是否应该已经初始化为变量?
我有这个函数,利用open来设置i/o重定向:
void setOutput(char * buffer){
int file = open(buffer, O_WRONLY || O_CREAT, S_IWUSR);
if(file < 0){ printf("error opening %s for output\n", buffer); }
if(dup2(file, 1) < 0){ printf("error with dup2 opening %s for output\n", buffer); }
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它适用于已定义的文件,但在收到未创建的文件时返回-1.不知道为什么