mastodon.zunda.ninja is one of the many independent Mastodon servers you can use to participate in the fediverse.
Zundon is a single user instance as home of @zundan as well as a test bed for changes of the code.

Administered by:

Server stats:

1
active users

#include

0 posts0 participants0 posts today
SASANO Takayoshi<p><a href="https://social.mikutter.hachune.net/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;stdio.h&gt;<br><a href="https://social.mikutter.hachune.net/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;fcntl.h&gt;<br><a href="https://social.mikutter.hachune.net/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;unistd.h&gt;<br><a href="https://social.mikutter.hachune.net/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;string.h&gt;</p><p><a href="https://social.mikutter.hachune.net/tags/define" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>define</span></a> MAX_ARGS 16</p><p>int main(int argc, char *argv[])<br>{<br> int i, fds[MAX_ARGS];</p><p> memset(fds, ~0, sizeof(fds));<br> for (i = 1; i &lt; argc &amp;&amp; i &lt; MAX_ARGS; i++) {<br> fds[i] = open(argv[i], O_RDONLY);<br> if (fds[i] &gt;= 0) printf("%d\n", fds[i]);<br> }<br> for (i = 1; i &lt; argc &amp;&amp; i &lt; MAX_ARGS; i++)<br> if (fds[i] &gt;= 0) close(fds[i]);<br> return 0;<br>}</p>
zunda<p>Cのincludeはmanページに書いてあるやつを並べるのが吉わよ</p><p>$ man bind<br />bind(2) System Calls Manual bind(2)</p><p>NAME<br /> bind - bind a name to a socket</p><p>LIBRARY<br /> Standard C library (libc, -lc)</p><p>SYNOPSIS<br /> <a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;sys/socket.h&gt;</p><p> int bind(int sockfd, const struct sockaddr *addr,<br /> socklen_t addrlen);</p><p> :</p>
Jann Horn<p>Wow, <a href="https://clang.llvm.org/docs/LanguageExtensions.html#builtin-dump-struct" rel="nofollow noopener" target="_blank"><code>__builtin_dump_struct</code></a> is an amazing clang feature, how did I never hear about this before?</p><pre><code>$ cat test.c<br>#include &lt;stdio.h&gt;<br><br>struct nested {<br> int n;<br>};<br>struct foo {<br> int member_a;<br> unsigned long member_b;<br> char *str;<br> void *ptr;<br> struct nested nested;<br>};<br><br>int main(void) {<br> struct foo f = {<br> .member_a = 123,<br> .member_b = 0x4141414141414141,<br> .str = "foobar",<br> .ptr = &amp;f,<br> .nested = {.n = 42}<br> };<br> __builtin_dump_struct(&amp;f, printf);<br>}<br>$ clang -o test test.c &amp;&amp; ./test<br>struct foo {<br> int member_a = 123<br> unsigned long member_b = 4702111234474983745<br> char * str = "foobar"<br> void * ptr = 0x7fff1df41b78<br> struct nested nested = {<br> int n = 42<br> }<br>}<br></code></pre><p>The <a href="https://github.com/llvm/llvm-project/commit/0652534131b269eec336a2ed3545642cc01a1300" rel="nofollow noopener" target="_blank">original version</a> of this feature was introduced back in 2018 (though it was <a href="https://github.com/llvm/llvm-project/commit/c4f95ef86a224fe730d2219aab90e88a0e7b03d2" rel="nofollow noopener" target="_blank">reimplemented since</a> in 2022).</p>
モグビリティ∞(インフィニティ)ロボ<p>昔割とやってた。</p><p>struct config_str config = {<br><a href="https://social.mikutter.hachune.net/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> "data.txt"<br>}</p>
zunda<p>これはきもいなあw</p><p>$ cat main.c<br /><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;stdio.h&gt;</p><p>int main(void) {<br /> fputs(<br /> <a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &quot;answer.txt&quot;<br /> &quot;\n&quot;, stdout<br /> );<br /> return 0;<br />}<br />$ cat answer.txt<br />&quot;42&quot;<br />$ gcc -Wall main.c<br />(警告なし)<br />$ ./a.out<br />42</p>
rinsuki<p><a href="https://mstdn.rinsuki.net/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> ?</p>
zunda<p>-Wsign-conversionとかこれを含む-Wconversionだと教えてもらえました。-Wallに入れておいてもらってもよかったよね…</p><p>$ cat main.c <br /><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;unistd.h&gt;</p><p>int main(void)<br />{<br /> size_t x;<br /> char buf[42];</p><p> x = read(0, buf, sizeof(buf));<br /> return (x &lt; 1);<br />}<br />$ gcc -Wsign-conversion main.c <br />main.c: In function ‘main’:<br />main.c:8:13: warning: conversion to ‘size_t’ {aka ‘long unsigned int’} from ‘ssize_t’ {aka ‘long int’} may change the sign of the result [-Wsign-conversion]<br /> 8 | x = read(0, buf, sizeof(buf));<br /> | ^~~~</p><p>明示的にキャストすれば怒られない。</p><p>$ cat main.c <br /><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;unistd.h&gt;</p><p>int main(void)<br />{<br /> size_t x;<br /> char buf[42];</p><p> x = (size_t) read(0, buf, sizeof(buf));<br /> return (x &lt; 1);<br />}<br />$ gcc -Wconversion main.c </p><p>$ gcc --version<br />gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0<br />Copyright (C) 2023 Free Software Foundation, Inc.<br />This is free software; see the source for copying conditions. There is NO<br />warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>
zunda<p>man 2 readによると</p><p><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;unistd.h&gt;<br />ssize_t read(int fd, void buf[.count], size_t count);</p><p>なんだけど</p><p>$ cat main.c <br /><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;unistd.h&gt;</p><p>int main(void)<br />{<br /> size_t x;<br /> char buf[42];</p><p> x = read(0, buf, sizeof(buf));<br /> return (x &lt; 1);<br />}<br />$ gcc -Wall -Wextra main.c</p><p>は何の警告もくれないんだねえ…</p><p>$ gcc --version<br />gcc (GCC) 14.2.1 20240910<br />Copyright (C) 2024 Free Software Foundation, Inc.<br />This is free software; see the source for copying conditions. There is NO<br />warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>
SASANO Takayoshi<p>うーん、Debian12ですら、これかあ。<br>[ 25%] Building CXX object libtermbench/CMakeFiles/termbench.dir/termbench.cpp.o<br>/home/uaa/termbench-pro/libtermbench/termbench.cpp:17:10: fatal error: format: そのようなファイルやディレクトリはありません<br> 17 | <a href="https://social.mikutter.hachune.net/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;format&gt;<br> | ^~~~~~~~<br>compilation terminated.</p>
zunda<p>&quot;2&quot;へのポインタの内容を*演算子?で取り出してるんだ</p><p>$ cat c-js.c <br /><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;stdio.h&gt;</p><p>int main() {<br /> printf(&quot;%d\n&quot;, *&quot;2&quot;);<br />}<br />$ gcc c-js.c &amp;&amp; ./a.out<br />50</p>
zunda<p>そういえば交換法則も成り立つよねw</p><p>$ cat c-js.c <br /><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;stdio.h&gt;</p><p>int main() {<br /> puts(&quot;-0.5&quot; + 1);<br /> puts(1 + &quot;-0.5&quot;);<br />}<br />$ gcc c-js.c &amp;&amp; ./a.out<br />0.5<br />0.5</p>
zunda<p>2も足せるw</p><p>$ cat c-js.c <br /><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;stdio.h&gt;</p><p>int main() {<br /> puts(&quot;-1.5&quot; + 2);<br />}<br />$ gcc c-js.c &amp;&amp; ./a.out<br />.5</p>
zunda<p>UBだ♪</p><p>$ cat return.c <br /><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;stdlib.h&gt;<br /><a href="https://mastodon.zunda.ninja/tags/include" class="mention hashtag" rel="tag">#<span>include</span></a> &lt;stdio.h&gt;</p><p>int function(void){<br /> return;<br />}</p><p>int main(void)<br />{<br /> printf(&quot;%d\n&quot;, function());<br /> return 0;<br />}<br />$ gcc return.c &amp;&amp; ./a.out &amp;&amp; ./a.out &amp;&amp; ./a.out<br />return.c: In function ‘function’:<br />return.c:5:3: warning: ‘return’ with no value, in function returning non-void<br /> 5 | return;<br /> | ^~~~~~<br />return.c:4:5: note: declared here<br /> 4 | int function(void){<br /> | ^~~~~~~~<br />-198725291<br />1404641621<br />1343713621</p>
ねずみ<p><a href="https://mstdn.jp/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> "Cello.h"</p><p>int main(int argc, char** argv) {</p><p> /* Stack objects are created using "$" */<br> var i0 = $(Int, 5);<br> var i1 = $(Int, 3);<br> var i2 = $(Int, 4);</p><p> /* Heap objects are created using "new" */<br> var items = new(Array, Int, i0, i1, i2);</p><p> /* Collections can be looped over */<br> foreach (item in items) {<br> print("Object %$ is of type %$\n",<br> item, type_of(item));<br> }</p><p> /* Heap objects destructed via Garbage Collection */<br> return 0;<br>}</p>
あっきぃ / C106(日)東7S-33b<p>やったことメモ:</p><p>RP2040向けの、RTCから時刻を取得するコードを<br><a href="https://github.com/adafruit/circuitpython/blob/main/lib/mbedtls_config/mbedtls_port.c#L50" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/adafruit/circuitpyt</span><span class="invisible">hon/blob/main/lib/mbedtls_config/mbedtls_port.c#L50</span></a></p><p>RP2350の場合はpowmanを使って取得するようにしてみた</p><p><a href="https://social.mikutter.hachune.net/tags/ifdef" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ifdef</span></a> PICO_RP2350<br><a href="https://social.mikutter.hachune.net/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> "hardware/powman.h"<br>time_t rp2_rtctime_seconds(time_t *timer) {<br> return powman_timer_get_ms() / 1000ULL;<br>}<br><a href="https://social.mikutter.hachune.net/tags/endif" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>endif</span></a></p><p>が、CircuitPython側でRuntimeError: pystack exhaustedで死ぬので、たぶんまだなんかおかしい</p>
hyumanase<p><a href="https://ruby.social/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;stdio.h&gt;<br><a href="https://ruby.social/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;string.h&gt;</p><p>int number_of_1_string(const char *x) {<br> if (strcmp(x, "0") == 0) {<br> return 0;<br> } else if (strcmp(x, "1") == 0) {<br> return 1;<br> }<br> return -1; // エラーコードとして-1を返す<br>}</p><p>2024-{07-18} Day{12}<br><a href="https://ruby.social/tags/100DaysOfCode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>100DaysOfCode</span></a></p>
hyumanase<p><a href="https://ruby.social/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;stdio.h&gt;</p><p>int main () {<br> printf("C programming is fun!\n");<br> return 0;<br>}</p><p>2024-{07-17} Day{11}<br><a href="https://ruby.social/tags/100DaysOfCode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>100DaysOfCode</span></a></p>
hyumanase<p><a href="https://ruby.social/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;stdio.h&gt;</p><p>int main(void)<br>{<br> printf("%d\n", 100 + 200);<br> return 0;<br>}</p><p>2024-{07-04} Day{10}<br><a href="https://ruby.social/tags/100DaysOfCode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>100DaysOfCode</span></a></p>
hyumanase<p><a href="https://ruby.social/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;stdio.h&gt;<br><a href="https://ruby.social/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;stdlib.h&gt;<br>int main(void)<br>{<br> int a, b, c, x;<br> printf("1 から 100 までの整数を1つ考えてください.\n");<br> printf("それを 3 で割った余り? "); scanf("%d", &amp;a);<br> printf("それを 5 で割った余り? "); scanf("%d", &amp;b);<br> printf("それを 7 で割った余り? "); scanf("%d", &amp;c);<br> x = (70 * a + 21 * b + 15 * c) % 105;<br> printf("あなたの考えた数は %d でしょう!\n", x);<br> return 0;<br>}</p><p>2024-{07-02} Day{9}<br><a href="https://ruby.social/tags/100DaysOfCode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>100DaysOfCode</span></a></p>
hyumanase<p><a href="https://ruby.social/tags/include" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>include</span></a> &lt;stdio.h&gt;<br>int main(void){<br>int numbar = 100;<br> printf("%d monsters draw near!", numbar);<br>}</p><p>2024-{06-30} Day{8}<br><a href="https://ruby.social/tags/100DaysOfCode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>100DaysOfCode</span></a></p>