INIファイルのところで、
if( false == IniFile->SectionExists(INI_SEC_GENERAL) ){
IniFile->WriteInteger(INI_SEC_GENERAL, INI_KEY_GEN_EMEET_SVRPORT, DEF_EMEET_SVRPORT);
}
という風に書かれているプログラムを発見いたしました。
こういう風な書き方もできるものなのでしょうか?
それともどこかで#defineとかやってるのでしょうか?
ん、少し難しそうに見えますけど、これは普通の構文だと思いますよ。
if文は要するに、結果がBooleanであればなんでもいいですから。
まあ、いったん変数に保存するなりして行を増やすのと、
こうやって短く済ますのと、どっちが見やすいか ということだと思います。
(わたしはこういう風にやりますけど)
「 == 」「 -> 」、「 { 」、「 } 」はC言語?
C++Builderですか。
でも冗長ですね。この場合、if文はいらないでしょう。
IniFile->WriteInteger(INI_SEC_GENERAL, INI_KEY_GEN_EMEET_SVRPORT, DEF_EMEET_SVRPORT);
だけで、DEF_EMEET_SVRPORTの値が既定値(INIにセクションがなかろうが、キーがなかろうが、この値)になればいいわけですから。
ちょっとレス遅くなりすいません。
みなさん、貴重なレスありがとうございました。
環境はC++ Bulder5です。(忘れてました。ペコリ
>まあ、いったん変数に保存するなりして行を増やすのと、
>こうやって短く済ますのと、どっちが見やすいか ということだと思いま
>す。
この意味がいまいちわかりません。もしよろしければ、詳しく教えていただけないでしょうか?
あと、INI_SEC_GENERAL, INI_KEY_GEN_EMEET_SVRPORT, DEF_EMEET_SVRPORTといううような書き方はどういうことなんでしょうか?これは#defineなんかでどっかで定義しているのでしょうか?
#defineなのか、単純な変数の定義なのかはソース全体をみないと、誰もわかりません。
> この意味がいまいちわかりません。もしよろしければ、詳しく教えていただけないでしょうか?
単純に、「人によって書き方はまちまちだけれど、結果は同じ」ということでしょう。
if( false == ){
}
と書かずに、
bool t = IniFile->SectionExists(INI_SEC_GENERAL);
if(! t){
IniFile->WriteInteger(INI_SEC_GENERAL, INI_KEY_GEN_EMEET_SVRPORT, DEF_EMEET_SVRPORT);
}
と書いた方が見やすい場合もあります。
ソースの書き方なんて、人それぞれですからあまり気にするほどでもないですよ。
よほど汚いソースを書かない限り。
失敗。切り取ってしまいました。
if( false == ){
は、
if( false == IniFile->SectionExists(INI_SEC_GENERAL) ){
の誤りです。
なるほど。
If(IniFile->SectionExists(INI_SEC_GENERAL)==falase)なんて書き方はよくないのでしょうか?
> よくないのでしょうか?
どういう基準での話でしょうか。
よくない場合はコンパイラがエラーまたは警告を出してくれますので、それで確認してください。
いえいえ、書き方としてまずいのでしょうか?
見にくいとか、あんまり好まれないとか。
それはもう、好みの問題だと思いますよ。
1つ気になったのですが、ifをIfに#defineしておくのは見づらいというより、バグが潜む危険性があるのでやめた方がよいです。単なる記述ミスかもしれませんが。
たとえば、僕は
if(a==1){
}
と書かずに、
if(a==1)
{
}
と、{の位置をifにそろえます。
# K&R本では確かifの後ろに{があったと思います
計算式がとても長い場合など、定数部を忘れてしまわないようにたとえば、
if(0==(a+b)*(c-d))
と書くこともあります。ただ、ソースの中で一定にした方がよいでしょう。
# これも、場合によってはOKです
そんなに、気にするほどでもないと思いますけどねぇ。
#include<stdio.h>
#include<stdlib.h>
int main(void){printf("hello.\n");return 0;}
これでも動きますし、
#include<stdio.h>
#include<stdlib.h>
int
main(
void
)
{
printf(
"hello.\n"
);
return
0;
}
これでも動くわけですから、あとは自分で見て、読みやすい方法で書けばよいと思います。
ふむふむ、忘れないように最初に書くというのが一番理解できました。
すごく気になっていたのでとても、助かりました。
本当にありがとうございます。
ツイート | ![]() |