zoukankan      html  css  js  c++  java
  • Declaration of non-local variable in 'for' loop

    #include <stdio.h>
    int main() {
    
    
        /***Declaration of non-local variable in 'for' loop***/
        for (struct {
                 int i;
             } s = {0}; s.i < 25; ++s.i) {
            printf("-----------
    ");
        }
    
        /**等价方式**/
        {
            struct {
                int i;
            } s = {0};
            for (; s.i < 25; ++s.i) {
                printf("-----------
    ");
            }
        }
    
    
        return 0;
    }

    参考自:https://stackoverflow.com/questions/53468223/declare-structure-within-for

    这是我在使用一份代码[https://github.com/DavidLeeds/hashmap]的时候发现的问题:

    #define __HASHMAP_FOREACH(x, key, data, h)                              
        for (HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); 
            ((key) = hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) &&     
                ((data) = hashmap_iter_get_data(&__HASHMAP_UNIQUE(x, it))); 
            hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)))
    #define __HASHMAP_FOREACH_SAFE(x, key, data, h, temp_ptr)               
        for (HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); 
            ((temp_ptr) = (void *)((key) = hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it)))) && 
                ((data) = hashmap_iter_get_data(&__HASHMAP_UNIQUE(x, it)));           
            ((temp_ptr) == (void *)hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) ?  
                hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)) : __HASHMAP_ITER_RESET(&__HASHMAP_UNIQUE(x, it)))
    #define __HASHMAP_FOREACH_KEY(x, key, h)                                
        for (HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); 
            (key = hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it)));                   
            hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)))
    #define __HASHMAP_FOREACH_KEY_SAFE(x, key, h, temp_ptr)                 
        for (HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); 
            ((temp_ptr) = (void *)((key) = hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it)))); 
            ((temp_ptr) == (void *)hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) ?  
                hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)) : __HASHMAP_ITER_RESET(&__HASHMAP_UNIQUE(x, it)))
    #define __HASHMAP_FOREACH_DATA(x, data, h)                              
        for (HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); 
            (data = hashmap_iter_get_data(&__HASHMAP_UNIQUE(x, it)));                 
            hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)))
    #define __HASHMAP_FOREACH_DATA_SAFE(x, data, h, temp_ptr)               
        for (HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); 
            ((temp_ptr) = (void *)hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) &&  
                ((data) = hashmap_iter_get_data(&__HASHMAP_UNIQUE(x, it)));           
            ((temp_ptr) == (void *)hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) ?  
                hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)) : __HASHMAP_ITER_RESET(&__HASHMAP_UNIQUE(x, it)))

    更正:

    #define __HASHMAP_FOREACH(x, key, data, h)                              
       HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); for (; 
            ((key) = hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) &&     
                ((data) = hashmap_iter_get_data(&__HASHMAP_UNIQUE(x, it))); 
            hashmap_iter_next(&__HASHMAP_UNIQUE(x, it))) 
    
    #define __HASHMAP_FOREACH_SAFE(x, key, data, h, temp_ptr)               
      HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); for (; 
            ((temp_ptr) = (void *)((key) = hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it)))) && 
                ((data) = hashmap_iter_get_data(&__HASHMAP_UNIQUE(x, it)));           
            ((temp_ptr) == (void *)hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) ?  
                hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)) : __HASHMAP_ITER_RESET(&__HASHMAP_UNIQUE(x, it)))
    #define __HASHMAP_FOREACH_KEY(x, key, h)                                
      HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); for (; 
            (key = hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it)));                   
            hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)))
    #define __HASHMAP_FOREACH_KEY_SAFE(x, key, h, temp_ptr)                 
       HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); for (; 
            ((temp_ptr) = (void *)((key) = hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it)))); 
            ((temp_ptr) == (void *)hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) ?  
                hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)) : __HASHMAP_ITER_RESET(&__HASHMAP_UNIQUE(x, it)))
    #define __HASHMAP_FOREACH_DATA(x, data, h)                              
       HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it)); for (; 
            (data = hashmap_iter_get_data(&__HASHMAP_UNIQUE(x, it)));                 
            hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)))
    #define __HASHMAP_FOREACH_DATA_SAFE(x, data, h, temp_ptr)               
       HASHMAP_ITER(*(h)) __HASHMAP_UNIQUE(x, it) = hashmap_iter(h, &__HASHMAP_UNIQUE(x, it));  for (; 
            ((temp_ptr) = (void *)hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) &&  
                ((data) = hashmap_iter_get_data(&__HASHMAP_UNIQUE(x, it)));           
            ((temp_ptr) == (void *)hashmap_iter_get_key(&__HASHMAP_UNIQUE(x, it))) ?  
                hashmap_iter_next(&__HASHMAP_UNIQUE(x, it)) : __HASHMAP_ITER_RESET(&__HASHMAP_UNIQUE(x, it)))
  • 相关阅读:
    Bootstrap的模态框中使用kindeditor无法编辑的问题
    resource is out of sync withthe file system
    Model报错:指定的存储区提供程序在配置中找不到 的解决
    两极——关于未来云计算的瞎想
    c#动态加载dll并调用dll中类的方法
    委托与事件的IL简单分析
    php搭建与网页服务器故障排查
    某AOP文章的注解……关于上下文和remoting
    终于有了我的blog了
    使用C#编写JavaScript
  • 原文地址:https://www.cnblogs.com/iuyy/p/13802559.html
Copyright © 2011-2022 走看看