2

最近、larbinのソースコードを読みました。しかし、私には疑問があります。global.hファイルはグローバルクラスを定義します。このファイルの最後に次のようなマクロがあります。

#define setPoll(fds, event) \
global::pollfds[global::posPoll].fd = fds; \
global::pollfds[global::posPoll].events = event; \
global::posPoll++

ただし、fetch / fetchPipe.ccファイルでは、次のようにこのマクロを呼び出します。

global::setPoll(n, POLLOUT);

問題は、なぜglobal::を使用してこのマクロを呼び出すのかということです。使用すると思います

setPoll(n, POLLOUT);

大丈夫です。誰でも理由を教えてくれますか?

4

1 に答える 1

1

ソースコードは完全に混乱していて、コンパイルすらしません。global.hでこれらの変更に対処せずに、バージョン2.2.2と現在のバージョン2.6.3の間で変更されたようfetch/fetchPipe.hです。また、次のインクルードステートメントもご覧くださいglobal.cc

#include <iostream.h> // iostream.h?
#include <unistd.h>   // twice, see below
#include <errno.h>
#include <string.h>   // mixing C++ and C libraries
#include <sys/types.h>
#include <unistd.h>
    ...

このコードは古く、標準のC++ではありません。他にもいくつか間違っていることがあります。しかし、あなたの質問に戻りましょう。はい、setPoll(n, POLLOUT);十分なはずです。これはに拡張されるため、使用global::setPollしてもバグは発生しません。

global::global::pollfds[global::posPoll].fd = fds;
global::pollfds[global::posPoll].events = event;
global::posPoll++;

globalですstructMike Seymourのコメントを参照)。

于 2012-07-30T13:05:44.007 に答える