私は常に受け取っています:
error: called object is not a function or function pointer
そのような三項演算子を使用する場合:
puts("\nx: " (0 == 1) ? "y1\n" : "y2\n");
私は何を間違っていますか?
私は常に受け取っています:
error: called object is not a function or function pointer
そのような三項演算子を使用する場合:
puts("\nx: " (0 == 1) ? "y1\n" : "y2\n");
私は何を間違っていますか?
関数でも関数ポインタでもないオブジェクトを呼び出そうとしています! 特に、コンパイラは文字列の後に開いた括弧を見て、関数呼び出しを呼び出そうとしていると考えます (コンパイラが「考える」と言える限り)。しようとしているように、文字列を三項演算子で連結することはできません。試す:
printf("\nx: %s", (0 == 1) ? "y1\n" : "y2\n");
puts("\nx: " (0 == 1) ? "y1\n" : "y2\n");
このように C 文字列を連結することはできないため、これは正しい方法ではありません。
次を使用してこれを行うことができますputs()
。
puts("\nx: ");
puts((0==1) ? "y1\n" : "y2\n");
不要な改行文字の追加を避けるには、fputs()
代わりにputs()
.
fputs("\nx: ");
fputs((0==1) ? "y1\n" : "y2\n");
このように文字列を連結することはできません。
簡単な解決策は、 printf を使用することです
printf("\nx: %s", (0 == 1) ? "y1\n" : "y2\n");
または、プットの使用を主張する場合は、string.h の strcat 関数が必要です。
char s[256] = "\nx: ";
puts(strcat(s, (0 == 1) ? "y1\n" : "y2\n"));