You are not logged in. This forum allows only logged in users to post. If you want to post in the forum, please log in.
下载
开发软件
账户
下载
开发软件
登录
我忘记用户名和密码了
创建帐户
语言
帮助
语言
帮助
×
登录
登录名
密码
×
我忘记用户名和密码了
简体中文翻译状态
类别:
软件
用户
PersonalForge
Magazine
Wiki
搜索
OSDN
>
浏览软件
>
System
>
Networking
>
CLX C++ Libraries
>
论坛
>
開発者
>
スコープ解決演算子について
CLX C++ Libraries
描述
项目概述
开发人员仪表板
项目的网页
开发人员
Image Gallery
List of RSS Feeds
Activity
统计
历史
下载
List of Releases
统计
源代码
Code Repository list
Subversion
查看仓库
任务单
Ticket List
里程碑列表
Type List
组件列表
List of frequently used tickets/RSS
Submit New Ticket
沟通
List of Forums
ヘルプ (2)
公開討議 (19)
開発者 (24)
新闻
论坛:
開発者
(Thread #21892)
Return to Thread list
RSS
スコープ解決演算子について (2009-03-03 12:22 by
cielquis
#42273)
Create ticket
「clxで、変数をホストのバイトオーダーからネットワークのバイトオーダーに
変換するhtons()というスタンダードライブラリにある関数を使用しているのですが、C++の名前空間の外側、つまり、大域的という事で、
::htons()
と、スコープ解決演算子::を使用しているのですが、darwinでは、これはマクロの為、エラーになっていました。Xcodeのビルドのプリプロセスで確認いたしました。」
http://qwik.jp/objc20-reading/30.html
上記への対応.
当初,大域空間で定義されている関数を呼び出すときは,::f() のような形で記述していたが,上記のような問題が発生するようなので f() と記述する事とする.比較的最近に実装したものは,上記のようなスコープ解決演算子は付けなくなっていたので,これを機に統一する事とする.
RE: スコープ解決演算子について (2009-03-15 00:02 by
cielquis
#42550)
Create ticket
何故グローバルな名前空間で定義されている関数を呼び出すときに,スコープ解決演算子を使用していたのかを思い出した.クラス内に同名のメソッドがある場合,引数が違ってもグローバル空間に定義されている関数を探しに行ってくれないからだった.
udp::socket, tcp::socket, tcp::acceptor, icmp::scoket, ssl::socket, ssl::acceptor 辺りでこの問題が出てくる.対象となる関数は,connect(), accept(), bind(), send(), recv() 辺り.
なので,以下の関数をコールするときはスコープ解決演算子を付ける事とする.
::connect(), ::bind(), ::listen(), ::accept(), ::send(), ::recv()
これ以外の関数のグローバル名前空間へのスコープ解決演算子は取り払う.尚,sendto() と recvfrom() は,send_to(), recv_from() のような規則でメソッド名を付けているのでこちらはスコープ解決演算子は付けない.
回复到
#42273